1

JSONを使用してPOSTリクエストを実行しようとすると、ヘッダーに問題が発生しました
。コードは次のとおりです。

$.ajax({
                type: "POST",
                url: url,
                data: jsonData,
                dataType: 'json',
                beforeSend: function(xhrObj){
                    xhrObj.setRequestHeader("Content-Type","application/json");
                    xhrObj.setRequestHeader("Accept","application/json");
                },
                error: function(){
                    alert("Fail");
                },
                success: function(){
                    alert("Success");
                }
            });

そして、これはFirebugによって表示されるリクエストヘッダーです。

OPTIONS /path HTTP/1.1
Host: 192.168.15.109:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 FirePHP/0.7.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
x-insight: activate
Pragma: no-cache
Cache-Control: no-cache

そして応答ヘッダー:

HTTP/1.1 204 No Content
Date: Thu, 24 May 2012 19:17:01 GMT
Allow: OPTIONS,POST

ご覧のとおり、ヘッダーはimが指定したものと一致しませんが、CURLを使用すると、代わりにヘッダーが次のようになります。

POST /path HTTP/1.1
User-Agent: curl/7.25.0 (i386-pc-win32) libcurl/7.25.0 OpenSSL/0.9.8u zlib/1.2

Host: localhost:8080
Accept: */*
Content-Type: application/json
Content-Length: 5

これに対するアイデアや解決策はありますか?

また、JQuery Sourceを変更して、AjaxからJSONに送信されるヘッダーのデフォルト値を設定しましたが、機能しませんでした。

4

2 に答える 2

1

同一生成元ポリシーの問題のようです。使用は機能するdataType='jsonp'はずですが、これには他の変更が必要になる場合があります。

詳細な説明については、 https://developer.mozilla.org/en/http_access_controlを参照してください。

于 2012-05-24T20:14:52.200 に答える
1

実際、これはクロスドメインの問題でした。URLをIPとして定義したため、ブラウザはクロスドメインリクエストのように解釈しました。

すべてに感謝します!

于 2012-05-25T15:15:41.230 に答える