更改axios标头中的Content-Type以修复415错误

the*_*uls 5 javascript rest http reactjs axios

我正在尝试通过axios发布请求将文件发送到后端。

这是我目前遇到的错误:

cherrypy._cperror.HTTPError:(415,“预期内容类型为application / json,text / javascript的实体”)

从我已阅读的内容中,我需要在发布请求中更改Content-Type,环顾四周,我目前正在尝试这样做:

handleUploadButton(e){
            const upload_file = this.state.file;
            const formData = new FormData();
            formData.append('file', upload_file);
            const request = axios.post(someUrl, formData, {headers: {
                "Content-Type": "application/json"}
            })
                .then(function (response) {
                    console.log('successfully uploaded', upload_file);
                });
    }
Run Code Online (Sandbox Code Playgroud)

不确定是否相关,但是所有这些都是通过reactjs表单发生的。这是我当前的Content-Type:Content-Type:multipart / form-data; boundary = ---- WebKitFormBoundaryBwjjjGuJEySeXdRU

我不知道从这里去哪里。任何帮助将不胜感激。

Ben*_*der 18

SignIn = () => {
    console.log('login clicked')
    let data = JSON.stringify({
        password: this.state.password,
        username: this.state.email
    })

    axios.post('url', data, {
        headers: {
            'Content-Type': 'application/json',
        }
    }
    )
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码片段可能会解决问题,但 [包括解释](//meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您提出代码建议的原因。也请尽量不要在代码中添加解释性注释,这会降低代码和解释的可读性! (4认同)
  • 我正在这样做,但由于某种原因没有替换默认的内容类型...... (2认同)

小智 -6

为了使 axios 包含Content-Type: application-json你需要这样做:

javascript
window.axios = require('axios')
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'
Run Code Online (Sandbox Code Playgroud)