Django + Phonegapでアプリケーションを構築しています。私はこの機能を使ってAjaxリクエストを送信しようとすると:存在していても、 'Access-Control-Allow-Origin'ヘッダーが要求されたリソースに存在しません。
<script>
$.ajax({
url: "http://192.168.0.101/commerce/product/" + localStorage.getItem("toView"),
type: "GET",
data: {},
success: function (json) {
console.log(json);
}
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
を私はクロームコンソールでというエラーが出ます:
XMLHttpRequestがhttp://192.168.0.101/commerce/product/2をロードすることはできません。 'http://192.168.0.101/commerce/product/2'から 'http://192.168.0.101/commerce/product/2/'へのリダイレクトは、CORS ポリシーでブロックされています。ポリシー:要求されたリソースには、「アクセス制御許可の原点」ヘッダーが存在しません。したがって、オリジン 'http://192.168.0.101:3000'は にアクセスできません。
問題は、要求されたヘッダーを含めることにあります。クロムで指定されたURLを開いてサーバーの応答を見ると、これが表示されます。
HTTP/1.0 200 OK
Date: Tue, 16 May 2017 09:42:29 GMT
Server: WSGIServer/0.2 CPython/3.4.3
Content-Type: application/json
Access-Control-Allow-Origin: *
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Methods: OPTIONS,GET,PUT,POST,DELETE
Access-Control-Allow-Headers: X-Requested-With, Content-Type
Content-Length: 89
私はviews.py
に私のサーバコードも含めています。
def product(request, prod_id):
#### SOME CODE
response = JsonResponse(response_data)
response['Access-Control-Allow-Origin'] = '*'
response['Access-Control-Allow-Methods'] = 'OPTIONS,GET,PUT,POST,DELETE'
response['Access-Control-Allow-Headers'] = 'X-Requested-With, Content-Type'
return response
なぜこのエラーが発生しますか?助けてください。ありがとう。
ええ、そうでした。どうして? – TheRandomGuy
これは正しいURLですdjangoが受け入れます。エラーログには、スラッシュがないことがわかります – doru