邮递员解决"无效的CORS请求"对于POST请求

时间:2016-08-04 21:57:45

标签: api rest postman

我刚刚开始使用Postman来测试我正在集成的API。

我有以下错误一直显示

  

无效的CORS请求

请注意以下事项:

  1. API使用承载令牌身份验证(OAuth2)。我有这个 没有问题。
  2. 我确实成功获得了承载令牌,将其分配给环境变量,然后尝试将其用于RESTful操作。
  3. 问题出在后续使用令牌的RESTful操作中。
  4. 当我使用旧令牌(通过POST操作)时,它是正确的 告诉我它已过期且未经授权。
  5. 当我生成一个新的并尝试运行restful call时,它会给我Invalid CORS request错误。
  6. 使用cURL,我没有任何问题。但是我对Postman感到沮丧
  7. 到目前为止我发现了什么:

    1. Using postman with Http POST requests - 我没有以粗体显示部分
    2.   

      以防其他人有同样的问题,以下是解决方法   它。转到Chrome中的https://www.getpostman.com/docs/capture   浏览器。单击拦截器扩展,然后选择添加到   铬。一旦添加,两者都会有一个新图标   浏览器和邮递员看起来像一个红绿灯。在邮差点击   这个变成了绿色。 然后为每个转到的请求添加标头   第三道光。每个标题都包含标题名称和值。   开始输入标题名称和允许的http标题列表   出现了。选择" Origin"。在单元格中,只需输入即可   您服务器的完整网址。 (不要忘记' http://'或' https://')

      1. What is the expected response to an invalid CORS request? - 迄今为止我见过的关于CORS错误的最佳解释。
      2. 其他材料涉及Access-Control-Allow-Method headerpreflight requests

        ...还有一个说明性的Apache Tomcat CORS流程流程图。

        enter image description here

6 个答案:

答案 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值"您的应用程序基本网址"

Check this image

现在你应该能够解决你所面临的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。对我来说,它在升级邮递员版本后可以使用。