私は簡単なjQueryの投稿をしています:
$.post( "script.php", { urls: listOfURLs} );
URL が含まれていない場合はpost
正常に動作しますが、URL が含まれている場合は次のようになります。
POST script.php 403 (Forbidden)
この URL のリストをサニタイズして 403ing を防ぐ方法はありますか?
関連するものはすべて同じドメインにあります。
私は簡単なjQueryの投稿をしています:
$.post( "script.php", { urls: listOfURLs} );
URL が含まれていない場合はpost
正常に動作しますが、URL が含まれている場合は次のようになります。
POST script.php 403 (Forbidden)
この URL のリストをサニタイズして 403ing を防ぐ方法はありますか?
関連するものはすべて同じドメインにあります。
それはあなたが何であるかに完全に依存します。listOfURLs
投稿リクエストのデータ部分は常に文字列でなければならないことに注意する必要があるため、解決策は次のようになります。
ListOfURLs が配列の場合、次のようにする必要があります。
$.post( "script.php", { 'urls[]': [ "URL1", "URL2" ] } );
フォーム データの場合は、シリアル化してjson
文字列にすることができます。
そうでない場合は、それを好きになるjson
ようにしてください。
これが機能しない場合は、データ自体に関する追加の詳細を提供してください
403 は、送信しようとしたオブジェクトを使用して、システムが URL またはリソースにアクセスしようとしたことを示しています。
私は、この ajax 呼び出しの短い形式のファンではありません。コードの概要をもっと知りたい場合は、JQuery の長い構文を使用してください。詳細については、これを参照してください。
$.ajax({
type: "POST",
url: url,
data: listofURLs2JSON,
dataType: "json",
statusCode: {
404: function() {
alert( "List of urls. Nooooo" );
}
},
success: function(data) {
alert( "This was totally awesome!" );
},
});
Labib が指摘したように、JSON を使用して 403 を回避できます。オブジェクトを逆シリアル化するには、JSON.stringifyを使用します。
var listofURLs2JSON = JSON.stringify(array/object, callback);
次に、オブジェクトを文字列として受け取り、json_decode
データを変数として取得するなどの php 関数を使用して、必要なことを行い、 経由で送り返すことができますjson_encode
。