Postman 解决POST请求的“无效CORS请求”

hivapdat  于 2022-11-07  发布在  Postman
关注(0)|答案(7)|浏览(1251)

我刚刚开始使用Postman来测试我正在集成的API。
我有以下错误不断出现
无效的CORS请求
请注意以下事项:

  1. API使用承载令牌身份验证(OAuth2)。我让它正常工作,没有问题。
    1.我确实成功地获得了不记名令牌,将其分配给一个环境变量,然后尝试将其用于RESTful操作。
    1.问题出在使用该标记的后续REST风格的操作中。
    1.当我使用旧令牌(通过POST操作)时,它理所当然地告诉我它已过期且未授权。
    1.当我生成一个新的,并试图运行restful调用,它给我的Invalid CORS request错误。
    1.使用cURL,我没有问题。但我对 Postman 感到沮丧
    我目前的发现:
  2. Using postman with Http POST requests-我没有看到粗体部分***
    以防其他人也有同样的问题,这里是解决这个问题的方法。在你的chrome浏览器中进入https://www.getpostman.com/docs/capture。点击拦截器扩展,然后选择添加到chrome。一旦它被添加,在浏览器和 Postman 的右上角都会有一个新的图标,看起来像一个红绿灯。在 Postman 中点击这个图标,它就会变成绿色。然后给每个去往
    第三个红绿灯的请求添加一个标题。每个标头都由标头名称和值组成。开始键入标头名称,将出现允许的http标头列表。选择“Origin”。在值的单元格中,只需键入****服务器的完整URL。(不要忘记“http://”或“https://”)
  3. What is the expected response to an invalid CORS request?-迄今为止我看到的有关CORS错误的最佳解释。
    另一种材料说的是Access-Control-Allow-Method headerpreflight requests
    ...还有一个说明性的Apache Tomcat CORS流程图。

umuewwlo

umuewwlo1#

下面是你再次找到的答案:
如果其他人也有同样的问题,这里是如何解决它。进入你的chrome浏览器的https://www.getpostman.com/docs/capture。点击拦截器扩展,然后选择添加到chrome。一旦它被添加,有一个新的图标右上方的浏览器和 Postman ,看起来像一个红绿灯。在 Postman 点击这个,它变成绿色。
......用粗体字表示:
然后在请求中添加一个标头,标头Key应该是“Origin”,标头Value应该是服务器的完整URL(不要忘记http://https://)。
请注意,如果没有拦截器插件,Chrome/Postman将不允许您添加带有原始密钥的标头。
还要注意,至少在我的系统上,拦截器图标看起来不再像红绿灯。

w1e3prcc

w1e3prcc2#

如果您的后端服务端代码检查请求的来源(只是为了避免CORS攻击),则在通过postman测试Rest API时可能会遇到此问题。

如何解决此问题?

您需要安装一个名为Postman Interceptorhttps://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo?hl=en)的Chrome插件。
成功安装此插件后,在你的 Postman 客户端,你可以看到一个小图标称为 Postman 拦截器,你需要切换它打开。
现在,您可以按如下方式添加请求标头
RequestHeader键“来源”RequestHeader值**“您的应用程序基本URL”**
Check this image
现在你应该能够克服你所面临的CORS问题了干杯!

nzkunb0c

nzkunb0c3#

只是避免使用浏览器/chrome postman插件。使用桌面应用程序代替!

k3fezbri

k3fezbri4#

看起来我们的服务器从Postman手动HTTP POST中看到,该源代码无效,因为它来自Postman,为“chrome-extension://fhbjgbiflinjbdggehcddcbncddddomop”
不知道为什么或如何解决客户端/ Postman 方面。似乎我们的服务器是正确的拒绝它,虽然是和发出403。

y53ybaqx

y53ybaqx5#

API后端应允许在Postman请求中设置“Origin”标头的值。例如,使用Sping 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.allowedOrigins具有逗号分隔的允许来源列表,例如:

cors.allowedOrings=http://localhost:8080,http://example.com

并将Postman中的“Origin”值设置为cors.allowedOrigins中的任何url

dly7yett

dly7yett6#

当我在Postman上测试我的API时,我得到了这个错误。即使在精心配置了我的cors之后。所以我用了Insomnia而不是Postman,它工作得很好。我想有时候Postman是个问题,因为它需要一些额外的努力。

de90aj5v

de90aj5v7#

你可以试试新版本的 Postman 。对我来说,它的工作后, Postman 版本从5.5.5升级到7.36.5

相关问题