3

私は簡単なjQueryの投稿をしています:

$.post( "script.php", { urls: listOfURLs} );

URL が含まれていない場合はpost正常に動作しますが、URL が含まれている場合は次のようになります。

POST script.php 403 (Forbidden)

この URL のリストをサニタイズして 403ing を防ぐ方法はありますか?

関連するものはすべて同じドメインにあります。

4

7 に答える 7

3

それはあなたが何であるかに完全に依存します。listOfURLs投稿リクエストのデータ部分は常に文字列でなければならないことに注意する必要があるため、解決策は次のようになります。

  • ListOfURLs が配列の場合、次のようにする必要があります。

    $.post( "script.php", { 'urls[]': [ "URL1", "URL2" ] } );

  • フォーム データの場合は、シリアル化してjson文字列にすることができます。

  • そうでない場合は、それを好きになるjsonようにしてください。

これが機能しない場合は、データ自体に関する追加の詳細を提供してください

于 2013-10-07T10:21:11.130 に答える
1

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

于 2013-10-07T22:06:38.103 に答える