2017-05-16 15 views
0

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 

なぜこのエラーが発生しますか?助けてください。ありがとう。

答えて

1

あなたはajax要求内のURLの最後にスラッシュを追加する必要があります

url: "http://192.168.0.101/commerce/product/" + localStorage.getItem("toView") + '/', 

DjangoはURLに付加される最後のスラッシュを期待しています。

+0

ええ、そうでした。どうして? – TheRandomGuy

+0

これは正しいURLですdjangoが受け入れます。エラーログには、スラッシュがないことがわかります – doru

関連する問題