“抓取失败的加载” – 在Postman中获取作品,但在Chrome和Safari中失败

更新:修正。 它看起来像请求回来了503(因为它应该),然后我的应用程序刷新并显示非错误消息:“取载失败加载”。 因为刷新,我只是没有看到回应。


我无法从本地托pipe的Create-React-App向Heroku托pipe节点服务器发出获取请求。

我的节点服务器启用了CORS。 如果我通过Postman发出一个POST请求,我得到一个合适的响应(503,因为目前没有数据库连接,所以数据没有被保存,如果我应该发回不同的响应,请告诉我)。 我的邮递员请求有'application/json'作为内容types,没有授权,以及{ "rating": "5", "zipcode": "0" }的正文。

但是,当我从我的React应用程序发出POST请求时,我的控制台中收到一条消息: “Fetch failed loading:OPTIONS” https://shielded-gorge-69158.herokuapp.com/feedback “。” 没有关联的错误,只有消息。 我的networking面板中没有关于请求的信息。

当我在localhost:3000(我的应用程序)到localhost:5000(我的服务器)上执行获取请求。 当我尝试向Heroku上托pipe的服务器发送请求时,它只会失败。

这是获取请求的样子:

 return fetch('https://shielded-gorge-69158.herokuapp.com/feedback', { method: 'POST', headers: { 'Content-type': 'application/json' }, body: JSON.stringify({ rating: userRating, zipcode: userZip }) }).then(res => { if (!res.ok) { throw new Error('Error:', res.statusText); } return res; }).catch(err => console.error(err)); 

编辑:我继续研究,似乎邮递员不应该/不会做预检请求( https://github.com/postmanlabs/postman-app-support/issues/2845 )。 所以也许这就是问题所在 – 但是为什么当我的服务器是本地的,而不是当它在Heroku上托pipe的时候,这个请求会起作用呢?

使用“Content-Type”而不是“Content-type”。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Simple_requests https://fetch.spec.whatwg.org/#cors-safelisted-request-header

说明:当您使用不正确的大小写时,则将其视为自定义标题,因此在这种情况下会发送预检请求。 现在,如果OPTIONS请求在服务器上用正确的Cors规范实现,那么下一个POST将被发送,否则它将不会被发送,并且请求将失败。 更多关于这个在上面的链接。