GVKun编程网logo

CORS错误:请求标题字段在飞行前响应中不允许Access-Control-Allow-Headers进行授权

16

在本文中,我们将带你了解CORS错误:请求标题字段在飞行前响应中不允许Access-Control-Allow-Headers进行授权在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的Acc

在本文中,我们将带你了解CORS错误:请求标题字段在飞行前响应中不允许Access-Control-Allow-Headers进行授权在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的Access Control-Allow-Headers不允许使用Ajax请求头域、Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Headers、Access-Control-Allow-Headers不允许请求标头字段Access-Control-Allow-Headers、Access-Control-Allow-Origin 标头如何工作? - How does Access-Control-Allow-Origin header work?

本文目录一览:

CORS错误:请求标题字段在飞行前响应中不允许Access-Control-Allow-Headers进行授权

CORS错误:请求标题字段在飞行前响应中不允许Access-Control-Allow-Headers进行授权

我正在尝试将请求从一个本地主机端口发送到另一个本地主机端口。我 在前端 使用 angularjs,在后端 使用 node

由于这是 CORS 请求,因此在node.js中,我正在使用

res.header(''Access-Control-Allow-Origin'', ''*'');res.header(''Access-Control-Allow-Methods'', ''GET, POST, PUT, DELETE, PATCH'');res.header(''Access-Control-Allow-Headers'', ''Origin, X-Requested-With, Content-Type, Accept, Authorization'');

在angular.js服务文件中,我正在使用

return {    getValues: $resource(endpoint + ''/admin/getvalues'', null, {        ''get'': {             method: ''GET'',             headers:{''Authorization'':''Bearer''+'' ''+ $localStorage.token}             }     }),}

我收到以下错误

请求标头字段在飞行前响应中,Access-Control-Allow-Headers不允许授权。

请帮忙!

答案1

小编典典

您还必须在允许的标题中添加选项。浏览器先发送预检请求,然后再发送原始请求。见下文

 res.header(''Access-Control-Allow-Methods'', ''GET,PUT,POST,DELETE,PATCH,OPTIONS'');

从源https://developer.mozilla.org/en-
US/docs/Web/HTTP/Methods/OPTIONS

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

已编辑

您可以通过使用npmjs.com/package/cors npm package
来避免这种手动配置。我也使用了这种方法,它既简单又清晰。

Access Control-Allow-Headers不允许使用Ajax请求头域

Access Control-Allow-Headers不允许使用Ajax请求头域

尝试构建一个DNN服务框架WebAPI,但是我在使用CORS时遇到麻烦.我有所有适当的标题(我想),但仍然似乎没有工作.

错误:

XMLHttpRequest cannot load http://www.dnndev.me/mysite/builder/API/echo?message=Hello+World&_=1412707749275. Request header field Key is not allowed by Access-Control-Allow-Headers.

请求标题:

Remote Address: 127.0.0.1:80
URL: http://www.dnndev.me/mysite/builder/API/echo?message=Hello
Request Method: OPTIONS
Status Code: 200 OK
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Access-Control-Request-Headers: accept,key
Access-Control-Request-Method: GET
Connection: keep-alive
Host: www.dnndev.me
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/37.0.2062.124 Safari/537.36

回应标题:

Access-Control-All-Headers: Origin,X-Requested-With,Content-Type,Accept,Key
Access-Control-Allow-Methods: *
Access-Control-Allow-Origin: *
Cache-Control: no-cache
Content-Length: 13
Content-Type: application/json; charset=utf-8
Date: Tue,07 Oct 2014 18:49:10 GMT
Expires: -1
Pragma: no-cache
Server: Microsoft-IIS/7.5

一般来说,这个错误是由于在“访问控制全标题”中没有适当的标题引起的.但是,我正在发送正确的响应以允许ajax继续请求.它只是拒绝.

这是我的ajax调用方法:

$.ajax({
    type: 'GET',url: 'http://www.dnndev.me/mysite/builder/API/echo',dataType: 'json',data: { message: 'Hello' },crossDomain: true,headers: { 'Key': 'Bearer 7680ff6e-1362-4236-a9cd-c6bc8b6f13ea' },success: function (result) { console.log(result); }
});

可能是显而易见的,但这只会发生在跨域请求上,只有当我包含自定义标题(因此指示ajax才能做一个OPTIONS).

您的服务器使用以下自定义标头对预检要求进行响应:
Access-Control-All-Headers: Origin,Key

而如果你(或写这个服务器的人)仔细阅读CORS,他应该回答:

Access-Control-Allow-Headers: Origin,Key

现在,客户端客户端可以继续使用Key自定义标头.

据说,承载对于在授权标题中发送的OAuth 2是非常具体的.使用钥匙似乎是一个可怕的违反RFC和东西,并有一个轮子改造.

Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Headers

Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Headers

我正在尝试使用发布请求将文件发送到我的服务器,但是当它发送时会导致错误:

Access-Control-Allow-Headers 不允许请求标头字段 Content-Type。

所以我用谷歌搜索了错误并添加了标题:

$http.post($rootScope.URL,{params: arguments},{headers: {
    "Access-Control-Allow-Origin" : "*","Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS","Access-Control-Allow-Headers": "Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"
}

然后我得到错误:

Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Origin

所以我用谷歌搜索,我能找到的唯一类似问题是提供了一个半答案,然后作为离题关闭。我应该添加/删除哪些标题?

Access-Control-Allow-Headers不允许请求标头字段Access-Control-Allow-Headers

Access-Control-Allow-Headers不允许请求标头字段Access-Control-Allow-Headers

我正在尝试使用发布请求将文件发送到服务器,但是在发送请求时会导致错误:

Access-Control-Allow-Headers不允许请求标头字段Content-Type。

所以我搜索了错误并添加了标题:

$http.post($rootScope.URL, {params: arguments}, {headers: {    "Access-Control-Allow-Origin" : "*",    "Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",    "Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"}

然后我得到错误:

Access-Control-Allow-Headers不允许请求标头字段Access-Control-Allow-Origin

所以我用谷歌搜索,唯一能找到的类似问题是半答案,然后关闭主题。我应该添加/删除哪些标题?

答案1

小编典典

服务器 (POST请求发送到的 服务器Access-Control-Allow-Headers的响应中
需要包含标头(等)。将它们放入客户的请求中无效。

这是因为服务器需要指定它接受跨域请求(并允许Content-Type请求标头,依此类推)–客户端无法自行决定给定服务器应允许CORS。

Access-Control-Allow-Origin 标头如何工作? - How does Access-Control-Allow-Origin header work?

Access-Control-Allow-Origin 标头如何工作? - How does Access-Control-Allow-Origin header work?

问题:

Apparently, I have completely misunderstood its semantics. 显然,我完全误解了它的语义。 I thought of something like this: 我想到了这样的事情:

  1. A client downloads javascript code MyCode.js from http://siteA - the origin . 客户端从 http://siteA- origin 下载 javascript 代码 MyCode.js。
  2. The response header of MyCode.js contains Access-Control-Allow-Origin: http://siteB , which I thought meant that MyCode.js was allowed to make cross-origin references to the site B. MyCode.js 的响应标头包含 Access-Control-Allow-Origin:http:// siteB ,我认为这意味着 MyCode.js 被允许对站点 B 进行跨域引用。
  3. The client triggers some functionality of MyCode.js, which in turn make requests to http://siteB, which should be fine, despite being cross-origin requests. 客户端触发了 MyCode.js 的某些功能,该功能继而向 http://siteB 发出了请求,尽管这是跨域请求,但仍然可以。

Well, I am wrong. 好吧,我错了。 It does not work like this at all. 它根本不像这样工作。 So, I have read Cross-origin resource sharing and attempted to read Cross-Origin Resource Sharing in w3c recommendation 因此,我阅读了跨域资源共享,并尝试阅读 w3c 建议中的跨域资源共享

One thing is sure - I still do not understand how am I supposed to use this header. 可以确定的一件事 - 我仍然不明白我应该如何使用此标头。

I have full control of both site A and site B. How do I enable the javascript code downloaded from the site A to access resources on the site B using this header? 我对站点 A 和站点 B 都拥有完全控制权。如何使用此标头使从站点 A 下载的 javascript 代码能够访问站点 B 上的资源?

PS 聚苯乙烯

I do not want to utilize JSONP. 我不想利用 JSONP。


解决方案:

参考一: https://stackoom.com/question/id4F/Access-Control-Allow-Origin 标头如何工作
参考二: https://oldbug.net/q/id4F/How-does-Access-Control-Allow-Origin-header-work

关于CORS错误:请求标题字段在飞行前响应中不允许Access-Control-Allow-Headers进行授权的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Access Control-Allow-Headers不允许使用Ajax请求头域、Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Headers、Access-Control-Allow-Headers不允许请求标头字段Access-Control-Allow-Headers、Access-Control-Allow-Origin 标头如何工作? - How does Access-Control-Allow-Origin header work?等相关知识的信息别忘了在本站进行查找喔。

本文标签: