我刚刚开始使用Postman来测试我正在集成的API。
我有以下错误一直显示
无效的CORS请求
请注意以下事项:
Invalid CORS request
错误。到目前为止我发现了什么:
以防其他人有同样的问题,以下是解决方法 它。转到Chrome中的https://www.getpostman.com/docs/capture 浏览器。单击拦截器扩展,然后选择添加到 铬。一旦添加,两者都会有一个新图标 浏览器和邮递员看起来像一个红绿灯。在邮差点击 这个变成了绿色。 然后为每个转到的请求添加标头 第三道光。每个标题都包含标题名称和值。 开始输入标题名称和允许的http标题列表 出现了。选择" Origin"。在单元格中,只需输入即可 您服务器的完整网址。 (不要忘记' http://'或' https://')。
其他材料涉及Access-Control-Allow-Method header
,preflight requests
...还有一个说明性的Apache Tomcat CORS流程流程图。
答案 0 :(得分:19)
以下是您再次找到的答案:
以防其他人有同样的问题,以下是如何解决它。转到Chrome浏览器中的https://www.getpostman.com/docs/capture。单击拦截器扩展,然后选择添加到chrome。添加后,浏览器和邮递员右上方会出现一个新图标,看起来像一个红绿灯。在邮递员点击这个,它变成绿色。
...用粗体翻译的位:
然后为您的请求添加标头。标题键应为" Origin"标头值应该是服务器的完整网址(不要忘记
http://
或https://
)。
请注意,Chrome / Postman不允许您在没有Interceptor插件的情况下添加带有原始密钥的标头。
另请注意,至少在我的系统上,Interceptor图标不再像交通灯一样。
答案 1 :(得分:6)
如果您的后端服务端代码检查请求的来源(只是为了避免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值"您的应用程序基本网址"
现在你应该能够解决你所面临的CORS问题 干杯!!
答案 2 :(得分:1)
我们的服务器似乎从Postman手册HTTP POST中看到该来源无效b / c来自Postman的来源是“ chrome-extension:// fhbjgbiflinjbdggehcddcbbddddop”
不确定为什么或如何在客户端/邮递员一方解决。似乎我们的服务器正确地拒绝了它并发出403。
答案 3 :(得分:0)
Postman请求中设置的“ Origin”标头的值应在API后端中允许。例如,使用Spring Boot for API应该具有下一个:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Value("${cors.allowedOrigins}")
private String allowedOrigins;
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins(allowedOrigins)
.allowedMethods("*")
.allowedHeaders("*");
}
}
其中allowedOrigins是使用application.properties
属性cors.allowedOrigins
设置的,该属性具有逗号分隔的允许来源列表,例如:
cors.allowedOrings=http://localhost:8080,http://example.com
并将“邮递员”中的“来源”值设置为cors.allowedOrigins
答案 4 :(得分:0)
只需避免使用浏览器/ chrome邮递员插件。请改用桌面应用程序!
答案 5 :(得分:-2)
您可以尝试新版本的PostMan。对我来说,它在升级邮递员版本后可以使用。