Chrome并不总是发送POST请求

时间:2018-07-18 21:12:04

标签: javascript google-chrome cors http-headers fetch-api

我正在使用'fetch'对我的节点服务器进行后期调用。我想通过单击按钮来执行此操作。

当我单击按钮时,发送了一个OPTIONS请求,但浏览器未发送后续的POST调用。

多次单击时,浏览器将继续发送“选项”请求,而多次尝试中仅发送一次“发布”请求。

let data = {name: "Butternut cucumberpatch", age: 26}
let headers = new Headers()
headers.append("Content-type", "application/json")

fetch(join(apiPath, "/user"), {
  method: "POST",
  headers: headers,
  body: JSON.stringify(data)
}).then(response => response)

(1)代码工作是在我同事的Chrome浏览器上进行的,而不是我的。 chrome版本是相同的。 (2)这在POSTMAN,Safari上运行正常。 (3)我以为本地获取可能存在问题,因此我尝试使用“获取”,“取消获取”,“请求”模块。但是仍然面临着同样的问题。

1 个答案:

答案 0 :(得分:0)

我在这里找到了解决方案: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Preflighted_requests

由于我的POST请求是跨源请求,因此发生了请求预检。我将Content-Type更改为application / x-www-form-urlencoded

如果我发出Content-Type的请求:application / x-www-form-urlencoded,则每次都会发生POST请求。我仍然不知道为什么它(application / json)在我的同事的chrome浏览器上可以工作,而不是我的。 我想使其与application / json一起使用。