【问题标题】:Django Cors Allow Access-Control-Allow-HeadersDjango Cors 允许访问控制允许标头
【发布时间】:2022-06-25 15:29:37
【问题描述】:

我正在尝试使用 Django 制作一个简单的 API。我已经设置了一个 django 服务器,然后在我自己的 html 文件中使用$.getJSON 发送请求。到目前为止,它一直在使用django cors headers package

现在我一直在尝试向我的 django 服务器发送请求标头,但我在 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 并且可以发出请求,只是不允许我设置请求标头。

设置:

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 不支持这个吗?我试图查找它,但我找不到任何东西。谢谢。

【问题讨论】:

    标签: json django cors getjson django-cors-headers


    【解决方案1】:

    从 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

    【讨论】:

      【解决方案2】:

      对我来说 CORS_ALLOW_HEADERS 没有用。

      在尝试了几件事后,我发现 CORS_EXPOSE_HEADERS 可以工作。

      CORS_EXPOSE_HEADERS = [
          "my-custom-header",
      ]
      

      这意味着现在我可以在响应标头中设置“my-custom-header”(及其值)。

      【讨论】:

        猜你喜欢
        • 2018-01-23
        • 2019-07-09
        • 2021-09-07
        • 2016-06-02
        • 2017-12-28
        • 2017-08-31
        • 2020-10-31
        • 2019-02-09
        相关资源
        最近更新 更多