我刚刚开始使用 Postman 来测试我正在集成的 API。
我有以下错误,一直出现
无效的 CORS 请求
请注意以下事项:
-
API 使用 Bearer 令牌 authentication(OAuth2)。我有这个工作没有问题。
-
我成功获得了承载令牌,将其分配给 Environment 变量,然后尝试将其用于 RESTful 操作。
-
问题出在后续使用令牌的 RESTful 操作中。
-
当我使用旧令牌(通过 POST 操作)时,它正确地告诉我它已过期且未经授权。
-
当我生成一个新的并尝试运行 restful 调用时,它会给我
Invalid CORS request
错误。 -
使用 cURL,我没有问题.但我对 Postman感到沮丧。
到目前为止我发现了什么:
- 使用 postman 与 Http POST 请求 - 我没有粗体
万一其他人有同样的问题,这里是如何解决它。转到 Chrome 浏览器中的https://www.getpostman.com/docs/capture。单击拦截器扩展,然后选择添加到 chrome。添加后,浏览器和邮递员右上方会出现一个新图标,看起来像一个红绿灯。在邮递员点击这个,它变成绿色。 然后为每个请求第三个灯添加一个标题.每个标题包含标题名称和值.开始在标题名称上键入,并显示允许的 http 标题列表.选择“原点”.在单元格中,只需键入服务器的完整 URL 即可.(不要忘记'http://'或'https://')。
- 对无效 CORS 请求的预期响应是什么? - 到目前为止我在 CORS 错误上看到的最佳解释.
其他材料讲的是Access-Control-Allow-Method header
,preflight requests
...还有一个说明性的 Apache Tomcat CORS 流程流程图。
4 回答
以下是您再次找到的答案:
...用粗体翻译的位:
请注意,Chrome/Postman 将不允许您在没有 Interceptor 插件的情况下添加带有 Key of Key 的 Header。
另请注意,至少在我的系统上,Interceptor 图标不再像交通灯一样。
如果您的 back-end 服务端代码检查请求的来源(只是为了避免 CORS 攻击),那么在通过邮递员测试您的 Rest API 时可能会遇到此问题。
如何解决这个问题.?
您需要安装一个名为Postman Interceptor(https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo?hl=en)的 Chrome 插件。
成功安装此插件后,在 Postman 客户端中,您可以看到名为 Postman Interceptor 的小图标,您需要切换它以将其打开。
现在您可以添加 Request 标头,如下所示
RequestHeader Key“Origin”RequestHeader Value “您的应用程序基本 URL”
检查此图片
现在你应该能够解决你所面临的 CORS 问题!
API 后端应允许在 Postman 请求中设置“Origin”标头的值。例如,使用 Spring Boot for API 应具有下一个:
其中 allowOrigins 是使用
application.properties
propertycors.allowedOrigins
设置的,其中包含逗号分隔的允许来源列表,例如:并将 Postman 中的“Origin”值设置为
cors.allowedOrigins
中的任何 url您可以尝试新版本的 PostMan。对我来说,升级后的邮递员版本之后就可以了