当前位置: 首页 > 知识库问答 >
问题:

"对起飞前请求的响应没有通过权限改造检查"是什么意思?

公冶弘壮
2023-03-14

当我试图通过Chrome的ajax请求访问API时,我收到了以下响应:

"加载http://localhost:1880/api_resource失败:对预试请求的响应没有通过权限改造检查:请求的资源上没有'Access-Control-允许-起源'标头。因此,原产地http://localhost:3000不允许进入。"

从消息中可以看到,客户端和API都在本地运行。

据我所知,这种情况与CORS跨来源请求有关。我看到在堆栈溢出上有类似的问题,但是从这些答案中,我不明白这个消息告诉我什么,它来自哪里。

具体来说,我理解响应标头“访问-控制-允许-起源”必须设置(通常为“*”),以允许从不同的域访问应用编程接口,并在其上提供应用编程接口。但是消息似乎与请求有关,而不是响应,据我所知,没有请求到达过应用编程接口。

什么是飞行前请求,它是如何失败的?

共有2个答案

茅鸿宝
2023-03-14

在我的情况下,问题是我的网站地址,我调用所有的api从同一台服务器,但我得到了这个错误。

我的网站地址是sateh.ir所以im我ajax请求我设置网址:http://sateh.ir/api/...

得到这个错误和工作了几个小时后,我得到了我必须设置ajax网址:http://www.sateh.ir/api/...

我不知道为什么我的网站不能理解,如果我不放“www”,我是从同一台服务器调用api的,但这是我的问题。

盛超
2023-03-14

据我现在了解,现代浏览器将在实际的跨源请求之前发出“飞行前”请求。此飞行前请求使用“选项”HTTP动词以及CORS标头访问控制请求方法访问控制请求标头,它希望在标头中看到有效的访问控制允许来源响应,表明服务器理解CORS协议并将允许实际(GET/POST/PUT)请求。

消息“对飞行前请求的响应未通过访问控制检查”表示浏览器在选项响应中未看到有效的“访问控制允许原点”标题。

在我的例子中,这是因为服务器(实现RESTAPI)被设置为正确响应PUT和POST请求,而不是使用CORS头响应OPTIONS请求。

 类似资料: