13

JQueryのGetメソッドを学んでいます。PythonHTTPサーバーを起動します。

(コマンド「Python-m SimpleHTTPServer」と入力するだけです)。

Webブラウザで「http:// localhost:80」にアクセスするだけで、このWebサーバーをテストできます。ただし、この非常に単純なJavaScriptを記述して、Webサーバーにアクセスするとします。エラーメッセージが表示されます:

「コード501、メッセージサポートされていないメソッド('OPTIONS')」

クロスドメインリクエストJQueryを想定したjquery.xdomainajax.jsライブラリを使用しています。

これが私のjavascriptコードです:

<html>
<head>
<script src="jquery.min.js"></script>
<script src="jquery.xdomainajax.js"></script>
<script type="text/javascript">
$(document).ready(function(){ 
  u = 'http://localhost:80';
 jQuery.get(u, function(res){       
    $("#data").html(res.responseText)
});
});


</script>
</head>
<body>
<p id="data"></p>
</body>
</html>

実際、uを「http://www.google.ca」などの他のURLに変更するとします。それは非常にうまく機能します。しかし、なぜそれが基本的なPythonHTTPサーバーで機能しないのかわかりません。誰か助けてもらえますか?

4

4 に答える 4

4

許可されたヘッダーに「Content-Type」などのフィールドを追加する必要がある場合もあります。

self.send_header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type") 
于 2012-06-29T23:56:38.990 に答える
3

CORS プリフライト リクエストのように見えます (https://developer.mozilla.org/En/HTTP_access_control)

別のドメイン/ポートにアクセスしようとしていると思います。リクエストに応じて、ブラウザはプリフライト リクエスト (OPTION リクエスト) を送信して、最初に送信したい一連のヘッダーまたは HTTP メソッドをサーバーが受け入れるかどうかを確認します。サーバーが OK と応答すると、ブラウザーは実際の要求を送信します。

Python サーバーが OPTIONs リクエストを実装していないように見えるため、エラーが発生します。

ヒント: ネットワーク検査ツール (tcpdump、wireshark、ngrep...) は、http リクエストやネットワーク エラーを処理する際に非常に役立ちます。

于 2011-12-12T06:23:18.587 に答える