axios怎么配置跨域请求
现在封装的http如下(借鉴网友):
import axios from 'axios'
import store from '@/store/'
import router from '@/router/'
// axios 配置
axios.defaults.timeout = 5000
// axios.defaults.baseURL = ''
// 请求拦截器
axios.interceptors.request.use(
config => {
if (store.state.token) {
config.headers.Authorization = `token ${store.state.token}`
}
// config.headers.token = localStorage.getItem('token') // 将接口返回的token信息配置到接口请求中
return config
},
err => {
return Promise.reject(err)
}
)
// 返回拦截器
axios.interceptors.response.use(
response => {
return response
},
error => {
if (error.response) {
store.dispatch('logout')
router.replace({
path: '/login',
query: {redirect: router.currentRoute.fullPath}
})
}
return Promise.reject(error.response.data)
}
)
export default axios
有个问题是发起post请求会出现option拦截,降低chrome安全等级后可以调通,问:怎么配置axios跨域?
我搜了下有说qs转的,但是要求传参是json,这个行不通
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
开发的时候,可以通过proxyTable配置,通过node代理为前端同域。
测试或开发时,可以使用nginx/apache等代理为同域。
当然也可以配置服务器端支持cors
然后台配合你配置一下 Access-Control-Allow-Headers 参数
如果你后台使用的是Java开发的,那么可以创建一个拦截器。通过拦截器设置response的Header
第二种方式就是使用nginx做代理,把所有请求都交由nginx进行转发,通过在nginx.conf配置文件中进行配置。比如请求的url为localhost:8080/user/,就在nginx.conf中配置user/绑定其他你需要请求的url路径。比如配置为:
这样就可以将user后缀的请求匹配到http://location:9090,这样也可以解决跨域问题,我使用的方式是通过nginx来做。