用Vue开发单页面应用时,一般用Axios实现Ajax传输,这会受浏览器同源策略限制。用解决跨域的方法都可以解决这个问题。像JSONP,CORS啥的都可以,但是设置session和cookie时会出问题。今天我在服务器配置Acess-Control-Allow-Origin,实现CORS,但是session和cookie都有问题。浏览器可以发送cookie到服务器,但是服务器无法通过Set-cookie设置cookie。其实要解决跨域的问题,Vue已经提供了proxyTable,只要简单配置就可以了。

在配置文件config/index.js中有个proxyTable对象:

1
proxyTable: {}

把它改成:

1
2
3
4
5
6
proxyTable: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
}
},

这样就可以把http://localhost:8080/api/代理到http://localhost:3000/api.

如果我要实现登录,服务器端处理登录的url是http://localhost:3000/api/login,那Axios的实现代码就是:

1
2
3
4
5
6
this.axios.post('/api/login', {
email: '[email protected]',
password: '1234455'
}).then((res) => {

});