我刚刚开始使用Postman来测试我正在集成的API。
我有以下错误不断出现
无效的CORS请求
请注意以下事项:
- API使用承载令牌身份验证(OAuth2)。我让它正常工作,没有问题。
1.我确实成功地获得了不记名令牌,将其分配给一个环境变量,然后尝试将其用于RESTful操作。
1.问题出在使用该标记的后续REST风格的操作中。
1.当我使用旧令牌(通过POST操作)时,它理所当然地告诉我它已过期且未授权。
1.当我生成一个新的,并试图运行restful调用,它给我的Invalid CORS request
错误。
1.使用cURL,我没有问题。但我对 Postman 感到沮丧。
我目前的发现: - Using postman with Http POST requests-我没有看到粗体部分***
以防其他人也有同样的问题,这里是解决这个问题的方法。在你的chrome浏览器中进入https://www.getpostman.com/docs/capture。点击拦截器扩展,然后选择添加到chrome。一旦它被添加,在浏览器和 Postman 的右上角都会有一个新的图标,看起来像一个红绿灯。在 Postman 中点击这个图标,它就会变成绿色。然后给每个去往第三个红绿灯的请求添加一个标题。每个标头都由标头名称和值组成。开始键入标头名称,将出现允许的http标头列表。选择“Origin”。在值的单元格中,只需键入****服务器的完整URL。(不要忘记“http://”或“https://”)。 - What is the expected response to an invalid CORS request?-迄今为止我看到的有关CORS错误的最佳解释。
另一种材料说的是Access-Control-Allow-Method header
,preflight requests
...还有一个说明性的Apache Tomcat CORS流程图。
7条答案
按热度按时间umuewwlo1#
下面是你再次找到的答案:
如果其他人也有同样的问题,这里是如何解决它。进入你的chrome浏览器的https://www.getpostman.com/docs/capture。点击拦截器扩展,然后选择添加到chrome。一旦它被添加,有一个新的图标右上方的浏览器和 Postman ,看起来像一个红绿灯。在 Postman 点击这个,它变成绿色。
......用粗体字表示:
然后在请求中添加一个标头,标头Key应该是“Origin”,标头Value应该是服务器的完整URL(不要忘记
http://
或https://
)。请注意,如果没有拦截器插件,Chrome/Postman将不允许您添加带有原始密钥的标头。
还要注意,至少在我的系统上,拦截器图标看起来不再像红绿灯。
w1e3prcc2#
如果您的后端服务端代码检查请求的来源(只是为了避免CORS攻击),则在通过postman测试Rest API时可能会遇到此问题。
如何解决此问题?
您需要安装一个名为Postman Interceptor(https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo?hl=en)的Chrome插件。
成功安装此插件后,在你的 Postman 客户端,你可以看到一个小图标称为 Postman 拦截器,你需要切换它打开。
现在,您可以按如下方式添加请求标头
RequestHeader键“来源”RequestHeader值**“您的应用程序基本URL”**
Check this image
现在你应该能够克服你所面临的CORS问题了干杯!
nzkunb0c3#
只是避免使用浏览器/chrome postman插件。使用桌面应用程序代替!
k3fezbri4#
看起来我们的服务器从Postman手动HTTP POST中看到,该源代码无效,因为它来自Postman,为“chrome-extension://fhbjgbiflinjbdggehcddcbncddddomop”
不知道为什么或如何解决客户端/ Postman 方面。似乎我们的服务器是正确的拒绝它,虽然是和发出403。
y53ybaqx5#
API后端应允许在Postman请求中设置“Origin”标头的值。例如,使用Sping Boot for API应具有下一个:
其中allowedOrigins是使用
application.properties
属性cors.allowedOrigins
设置的,cors.allowedOrigins
具有逗号分隔的允许来源列表,例如:并将Postman中的“Origin”值设置为
cors.allowedOrigins
中的任何urldly7yett6#
当我在Postman上测试我的API时,我得到了这个错误。即使在精心配置了我的cors之后。所以我用了Insomnia而不是Postman,它工作得很好。我想有时候Postman是个问题,因为它需要一些额外的努力。
de90aj5v7#
你可以试试新版本的 Postman 。对我来说,它的工作后, Postman 版本从5.5.5升级到7.36.5