3

私は次の機能を持っています:

$.ajax({url:"http://127.0.0.1:8080", data: "123",
    success:
    function(response, textStatus, jqXHR) 
    {
        alert(response);
    },
    error:
    function(jqXHR, textStatus, errorThrown)
    {
        alert("The following error occured: " + textStatus + " " + errorThrown);
    }
});

リクエストを送信し、「nc -l 8080」でリクエストを傍受します。のように見えます

GET /?123 HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:15.0) Gecko/20100101         Firefox/15.0.1
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origin: null

それから私は答えます

HTTP/1.1 200 OK
Content-Length: 3

abc

問題は、常にエラーが発生することです (「次のエラーが発生しました: エラー」) 何が問題だと思いますか?

4

2 に答える 2

0

Tomaszが指摘したように、それは同じ起源のポリシーによるものです。

これを証明/テストするには:

HTMLページが「index.html」であると仮定すると、次のようになります。

  • index.html と同じディレクトリからコマンド「python -m SimpleHTTPServer 8080」を実行します。
  • ブラウザにアクセスして、「http://127.0.0.1:8080/index.html」と入力します。Python は html を提供し、ブラウザはそれを適切にレンダリングする必要があります。
  • ここで python コマンドを強制終了し、代わりに「nc -l 8080」を実行します。NC は、元の Web ページと同じドメイン/ポートで ajax リクエストを処理する準備ができています。
  • Web ページから ajax 呼び出しを呼び出し、nc で応答するだけです。

ajax が動作するようになりました。

于 2012-10-26T14:43:39.807 に答える
0

readyState=0 は、リクエストがまだ送信されていないことを意味します。定数「UNSENT」の名前: http://www.w3.org/TR/XMLHttpRequest/

リクエストを送信する前のエラーの実際の原因については、はい、same-origin-policy が原因である可能性が最も高いです。

リクエストをキャプチャするには、相対リンク url:"/" を使用する必要があったと思います。

于 2013-01-23T20:56:07.707 に答える