邮递员模拟服务不接受预检请求

Posted

技术标签:

【中文标题】邮递员模拟服务不接受预检请求【英文标题】:Postman mock service not accepting preflight request 【发布时间】:2017-12-16 08:05:54 【问题描述】:

使用 Postman Pro API,我为我的收藏创​​建了一个 Postman 模拟。

我为 GET /auth/jwt/login 创建了一个示例响应,它返回一个示例 JWT 令牌。

我已经通过邮递员成功使用了模拟(包括x-api-key 标头),但是当我尝试在浏览器中使用它时,将标头添加到我的请求中(使用 axios),邮递员响应预检 OPTIONS 请求 "error":"name":"invalidCredentialsError","message":"Please provide the required `x-api-key` authentication header."

正如预期的那样,浏览器正在剥离 x-api-key 标头(根据 CORS 规范),请参阅:How do you send a custom header in a cross-domain (CORS) XMLHttpRequest?

那么在开发过程中如何使用我的应用程序中的 Postman 模拟服务器?

【问题讨论】:

【参考方案1】:

这似乎在预检 OPTIONS 请求中缺少 x-api-key。您可以检查OPTIONS 请求并查看x-api-key 标头是否正在传递?

如果 x-api-key 正在传递,则检查响应是否正在发送 Access-Control-Allow-Origin: * 标头。如果不是,那么您的 CORS 请求将不起作用。模拟服务器需要允许这样做,AFAIK 很快就会向所有用户推出。

【讨论】:

我还发送了电子邮件至 help@getpostman.com 并收到以下回复。 We're aware of this, and will be rolling out support for CORS soon, hopefully within a week. Stay tuned to https://twitter.com/postmanclient for updates 所以看起来邮递员方面的问题不允许预检。 @Kieran - 你现在应该可以使用它了。为我工作。

以上是关于邮递员模拟服务不接受预检请求的主要内容,如果未能解决你的问题,请参考以下文章

cors跨域之简单请求与预检请求(发送请求头带令牌token)

为啥会有OPTIONS请求

浏览器中的 CORS 预检错误,但邮递员请求有效

如何使用 Postman 模拟服务器

Ajax 不接受 CORS(预检)响应

Ionic 5 - API 请求在浏览器上工作,而不是在模拟的 IOS 上