PUT请求body作为application / json而不是plain / text

时间:2018-06-18 22:48:09

标签: javascript reactjs fetch-api

我正在反应并试图向api发出一个put请求。我试图将我的身体作为内容类型的应用程序/ json发送,但它仍然以text / plain发送。如果我添加标题" Content-Type" :" application / json"我只是把这作为回报。

  

请求标题字段预检响应中的Access-Control-Allow-Headers不允许使用Content-Type。

我正在使用此API:http://funtranslations.com/api/yoda

这是我的要求:

fetch('http://api.funtranslations.com/translate/yoda.json', { method: 'PUT', body: JSON.stringify({ text: this.state.input }) })
.then(res => { return console.log(res.json()); }) }

提前感谢您试图帮助我:)

1 个答案:

答案 0 :(得分:0)

我认为您发送的内容类型错误。根据{{​​3}}网站的内容类型应为application/x-www-form-url-encoded

fetch('http://api.funtranslations.com/translate/yoda.json', {
  method: 'PUT',
  headers: {'Content-Type': 'application/x-www-form-url-encoded', 'Accept': 'application/json'},
  body:"text=hadi"
})
.then(res => {
    return console.log(res.json());
})

funtranslation清楚地解释了CORS问题

对于跨域请求,将内容类型设置为application / x-www-form-urlencoded,multipart / form-data或text / plain之外的任何类型,都会触发浏览器向服务器发送预检OPTIONS请求

我喜欢这张照片,看看CORS是什么: This address