请求标头字段在设置请求标头时,预检响应错误中的Access-Control-Allow-Headers不允许授权

时间:2017-09-19 13:18:49

标签: jquery ajax

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

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

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

  3. 我搜索了很多,发现了很多解决方案,但我不明白。

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

    需要轻松了解此问题,请建议

1 个答案:

答案 0 :(得分:0)

我想象.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并绕过浏览器安全限制。