当postman正在做的时候,javascript fetch没有发布到rest api端点

时间:2018-03-28 13:28:36

标签: javascript jquery fetch fetch-api

我有一个rest api endpoint,我正在使用正确发布的POSTMAN进行检查。但是,当我使用JAVASCRIPT FETCH进行此操作时,我无法发布它。下面是我的fetch代码:

const { inputAOI, wktForCreation } = this.state

fetch('http://192.168.1.127:8080/aoi/', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ userName: 'fuseim', aoiName: inputAOI, wkt: wktForCreation }),
      mode: 'no-cors'
    }).then(function (response) {
      if (response.ok) {
        return response.json()
      } else {
        throw new Error('Could not reach the API: ' + response.statusText)
      }
    }).then(function (data) {
      console.log({ data })
    }).catch(function (error) {
      console.log({ error })
    })

以下是请求标头的图片。 error image

在上面的图片中可以看到,在Request Headers中,Content-Type仍为text/plain,但我发送了application/json,如上面的提取代码所示。

检查控制台中的响应预览。 error 2 image

以下是正确的POSTMAN请求: postman image

2 个答案:

答案 0 :(得分:1)

正如评论中暗示的那样,问题在于mode:"no-cors"

Content-Type被认为是一个简单的标题,应该不带cors,只允许使用以下值:

  • 应用程序/ x-WWW窗体-urlencoded
  • 的multipart / form-data的
  • 文本/纯

请参阅:https://fetch.spec.whatwg.org/#simple-header

如果您在与脚本相同的主机/端口上运行API,则应使用mode: "same-origin"或者将运行脚本的主机/端口添加为API上的允许来源。

有关CORS的更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

答案 1 :(得分:0)

而不是

headers: { 'Content-Type': 'application/json' }

你可以尝试:

headers: new Headers({ 'Content-Type': 'application/json' })