我有一个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 })
})
在上面的图片中可以看到,在Request Headers
中,Content-Type
仍为text/plain
,但我发送了application/json
,如上面的提取代码所示。
答案 0 :(得分:1)
正如评论中暗示的那样,问题在于mode:"no-cors"
Content-Type被认为是一个简单的标题,应该不带cors,但只允许使用以下值:
请参阅: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'
})