我正在尝试测试对本地 Django 开发服务器的调用。这是一个返回 JSON 对象的 AJAX 调用。Django 视图执行此操作:
return JsonResponse(response, safe=False)
我通过启动 Django 服务器(运行后端)然后启动我的浏览器并打开我修改过的 HTML 页面来对此进行测试。Django 不提供这些页面。
在 Firefox 中,我可以在页面上进行 ajax 调用。它返回具有正确 MIME 类型的正确数据。
在 Chrome 中,我不能。我收到以下错误:
Cross-Origin Read Blocking (CORB) blocked cross-origin response http://localhost:8000/dataload/alljson with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.
我试图寻找解决这个问题的方法。我已经检查了这个问题,但是清除我的缓存的建议没有任何作用。我还发现了涉及使用的建议django-cors-headers
,但这是 CORB(不是 CORS)。尽管如此,我已经安装corsheaders
并设置CORS_ORIGIN_ALLOW_ALL = True
以消除这种可能性。
我的MIDDLEWARE
设置有这个
MIDDLEWARE = [
...
"corsheaders.middleware.CorsMiddleware",
"django.middleware.common.CommonMiddleware",
...
]
我在 Firefox 中得到的响应标头是:
Content-Length 12827
Content-Type application/json
Date Wed, 06 Feb 2019 18:38:03 GMT
Server WSGIServer/0.2 CPython/3.6.7
Vary Origin
X-Frame-Options SAMEORIGIN
我在打电话http://localhost:8000/dataload/alljson
。如果我调用http://localhost:8000/dataload/alljson/
(带有斜杠),我会得到 404。
还是没有骰子。
如何让 Chrome 允许我的开发 Django 服务器响应此 ajax 调用?