fetch POST is returning HTTP 415, while curl goes on fine and returns result(fetch POST 返回 HTTP 415,而 curl 继续正常并返回结果)
问题描述
这就是我的代码的样子
let body = {
            authCode: "XXXX",
            clientId: "YYYYYY",
            clientSecret: "ZZZZZZ"
        };
        fetch('https://api.myapp.com/oauth/token',{
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                "Accept": "application/json"
            },
            mode: 'no-cors',
            body: body
        }).then(function(response){
            console.log("response: ", response);
        }).catch(function(error){
            console.log("could not get tokens: ", error);
        })
在 Chrome 中,这就是我看到的
In Chrome, this is what I see
我尝试通过 curl 命令 做到这一点,这就是它的样子
I tried to do this by curl command and this is what it looks like  
➜  ~ curl -X POST -H "Content-Type: application/json" -d '{
  "authCode": "XXXX",
  "clientId": "YYYYY",
  "clientSecret": "ZZZZZZZZ"
}' https://api.myapp.com/oauth/token
{"authToken":"e141kjhkwr3432ca9b3d2128385ad91db4cd2:cca6b151-cab4-4de2-81db-9a739a62ae88:23000000"}
我在这里做错了什么?
更新
改成following后,结果还是HTTP 415 
After changing it to following, the result is still HTTP 415 
fetch('https://api.myapp.com/oauth/token',{
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                "Accept": "application/json"
            },
            mode: 'no-cors',
            body: JSON.stringify(body)
        }).then(function(response){
            console.log("response: ", response);
        }).catch(function(error){
            console.log("could not get tokens: ", error);
        })
有趣的是,我意识到我发送了标题 "Content-Type": "application/json" 而我得到的是 content-type: text/plain,为什么会这样?
Interestingly, I realized that I sent the header "Content-Type": "application/json" while what I get back is content-type: text/plain, why that might be happening?
推荐答案
你必须像这样定义 Accept 和 Content-Type 标头并字符串化你的数据对象
you must define Accept and Content-Type headers like that and stringify your data object
const params = {
            headers: {
                'Accept': "application/json, text/plain, */*",
                'Content-Type': "application/json;charset=utf-8"
            },
            body: JSON.stringify(yourObject),
            method: "POST"
        };
fetch(url, params)
        .then(data => { console.log('data', data)})
        .then(res => { console.log('res', res) })
        .catch(error => { console.log('error', error) });
                        这篇关于fetch POST 返回 HTTP 415,而 curl 继续正常并返回结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:fetch POST 返回 HTTP 415,而 curl 继续正常并返回结果
				
        
 
            
        - 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
 - addEventListener 在 IE 11 中不起作用 2022-01-01
 - 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
 - CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
 - 失败的 Canvas 360 jquery 插件 2022-01-01
 - Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
 - Flexslider 箭头未正确显示 2022-01-01
 - 400或500级别的HTTP响应 2022-01-01
 - Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
 - Fetch API 如何获取响应体? 2022-01-01
 
						
						
						
						
						