Django Cors 允许 Access-Control-Allow-Headers
Django Cors Allow Access-Control-Allow-Headers
我正在尝试使用 Django 制作一个简单的 API。我设置了一个 Django 服务器,然后在我自己的 html 文件上使用 $.getJSON
发送请求。到目前为止,它一直在使用 django cors headers package.
现在我一直在尝试向我的 Django 服务器发送请求 header,但我在 Chrome 控制台中收到此错误:
Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/?q=example+query' from origin 'http://localhost:63342' has been blocked by CORS policy: Request header field Example-Header is not allowed by Access-Control-Allow-Headers in preflight response.
我不确定是什么问题,我 django-cors 设置正确并且我能够发出请求,只是不允许我设置请求 headers。
设置:
INSTALLED_APPS = [
...
'corsheaders',
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
CORS_ALLOWED_ORIGINS = [
"http://localhost:63342"
]
<script>
$.ajaxSetup({
beforeSend: function(request) {
request.setRequestHeader("Example-Header", 'Example-Value');
},
});
$.getJSON("http://127.0.0.1:8000/api/?q=example+query", function (data) {
console.log(data);
});
</script>
@cache_page(60 * 60 * 24 * 7)
def ExampleAPI(request):
if request.method == 'GET':
print(request.headers['Example-Header']) # Print Header Value
print(request.GET.get('q')) # Print URL Query Parameter Value
return JsonResponse([{"Example-Response": "Example-Response-Value"}], safe=False)
那我做错了什么? django-cors不支持吗?我试着查找它,但找不到任何东西。谢谢。
根据 PyPI 上 django-cors-headers
的文档,您似乎需要像这样设置 CORS_ALLOW_HEADERS
:
CORS_ALLOW_HEADERS = [
...
"Example-Header",
...
]
https://pypi.org/project/django-cors-headers/
如果您想更深入地了解 CORS,这里有一份详尽的文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
我正在尝试使用 Django 制作一个简单的 API。我设置了一个 Django 服务器,然后在我自己的 html 文件上使用 $.getJSON
发送请求。到目前为止,它一直在使用 django cors headers package.
现在我一直在尝试向我的 Django 服务器发送请求 header,但我在 Chrome 控制台中收到此错误:
Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/?q=example+query' from origin 'http://localhost:63342' has been blocked by CORS policy: Request header field Example-Header is not allowed by Access-Control-Allow-Headers in preflight response.
我不确定是什么问题,我 django-cors 设置正确并且我能够发出请求,只是不允许我设置请求 headers。
设置:
INSTALLED_APPS = [
...
'corsheaders',
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
CORS_ALLOWED_ORIGINS = [
"http://localhost:63342"
]
<script>
$.ajaxSetup({
beforeSend: function(request) {
request.setRequestHeader("Example-Header", 'Example-Value');
},
});
$.getJSON("http://127.0.0.1:8000/api/?q=example+query", function (data) {
console.log(data);
});
</script>
@cache_page(60 * 60 * 24 * 7)
def ExampleAPI(request):
if request.method == 'GET':
print(request.headers['Example-Header']) # Print Header Value
print(request.GET.get('q')) # Print URL Query Parameter Value
return JsonResponse([{"Example-Response": "Example-Response-Value"}], safe=False)
那我做错了什么? django-cors不支持吗?我试着查找它,但找不到任何东西。谢谢。
根据 PyPI 上 django-cors-headers
的文档,您似乎需要像这样设置 CORS_ALLOW_HEADERS
:
CORS_ALLOW_HEADERS = [
...
"Example-Header",
...
]
https://pypi.org/project/django-cors-headers/
如果您想更深入地了解 CORS,这里有一份详尽的文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS