我正在使用Django + Phonegap构建应用程序。当我尝试使用此函数发送Ajax请求时:
<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>
我在Chrome控制台中收到错误消息:
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阻止 policy:没有'Access-Control-Allow-Origin'标题出现在 请求的资源。因此,“http://192.168.0.101:3000”来源 不允许访问。
问题在于我包含了请求的标头。当我在chrome中打开给定的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
为什么我收到此错误?请帮忙。感谢。
答案 0 :(得分:2)
您应该在ajax
请求的网址末尾添加斜杠:
url: "http://192.168.0.101/commerce/product/" + localStorage.getItem("toView") + '/',
Django期望将一个尾部斜杠附加到URL。