axios跨域时 返回200 但是请求方法变成options

axios跨域时 返回200 但是请求方法变成options 请求失败

图片描述

代码:
axios.post('http://192.168.3.128/login',{username:'test',password:'test'}).then(function(){

console.log('salkdj');

});

阅读 28.2k
4 个回答

上面的说的都对, 我这里给出个解决办法

axios.interceptors.request.use(function (config) {
    config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
    if(config.method === 'post') {
        config.data = qs.stringify( {
            ...config.data
        })
    } 
    return config;
  }, function (error) {
    loadinginstace.close()
    return Promise.reject(error);
  })

设置拦截器, 把content-type 设置成application/x-www-form-urlencoded, 降级为简单请求, 就不会发送options请求, 注意如果是post方法, 需要qs模块转换一下参数

当你的 ajax 的请求为非简单请求时,浏览器会进行预检,即发送 OPTIONS 请求到服务器,询问是否允许跨域。如果响应中允许你的预检中请求的跨域行为,则浏览器会进行真正的请求。否则,会报 405 错误。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题