【问题标题】:Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response error while set request header请求标头字段 Authorization is not allowed by Access-Control-Allow-Headers in preflight response error while set request header
【发布时间】:2018-02-28 07:21:21
【问题描述】:

我的 ajax 请求中有以下代码。

  beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'bearer t-7614f875-8423-4f20-a674-d7cf3096290e') }
  1. 最初,我需要知道 xhr.setRequestHeader() 的用途。
  2. 虽然设置如上,我收到控制台错误

    预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权。

我搜索了很多,找到了很多解决方案,但我不明白。

请任何人解释一下,我们为什么要使用这个,为什么会出现这个问题以及如何解决这个问题。

需要对这个问题的简单理解,请提出建议

【问题讨论】:

  • 我认为您必须在从服务器发送的标头中设置 Access-Control-Allow-Headers = true 以允许在客户端上的请求中设置标头。
  • Access-Control-Allow-Headers = true,是在后端还是客户端添加的?这个怎么加?

标签: jquery ajax


【解决方案1】:

我想.setRequestHeaders() 来自旧版本的 JQuery。它不在当前文档中。这将是一个类似的功能:

https://api.jquery.com/jQuery.ajaxSetup/

对于您的错误,

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS#Preflighted_requests_in_CORS

在 CORS 中,发送一个带有 OPTIONS 方法的预检请求,以便服务器可以响应是否可以接受发送带有这些参数的请求。 Access-Control-Request-Method 标头作为预检请求的一部分通知服务器,当实际请求发送时,它将使用 POST 请求方法发送。 Access-Control-Request-Headers 标头通知服务器,当实际请求发送时,它将与 X-PINGOTHER 和 Content-Type 自定义标头一起发送。服务器现在有机会确定它是否希望在这些情况下接受请求。

基本上,询问服务器是否可以发送您的标头是一种浏览器安全功能。如果Authorization 不是可接受标头列表的一部分,则浏览器将给出错误。这是服务器端的错误。我遇到了这个问题,因为我改用了 Authentication 标头。

您必须使用自己的服务器来访问 URL 并绕过浏览器安全限制。

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2018-06-14
    • 2016-08-20
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多