在實際開發中,前後端分離的項目通常會需要同後臺開發人員聯調接口,不可避免的會碰到跨域的問題。雖說跨域問題最後基本都是後臺同事解決的,但是有時候爲了趕時間,沒轍只有自己來,使用node代理解決
跨域:協議 域名 端口號 三個只要有一個不一樣就是跨域,也就是不同域名之間的訪問;
通常解決跨域的方法 前端jsonp請求 或者node代理
後臺配置攔截器或者使用 註解@CrossOrigin(我自己寫的基本都是用的整個 配置成*放開所有的請求,反正也是寫着玩玩的)
前端vue全家桶一條龍服務,後臺ssm
首先在vue項目中 在config目錄下index.js
proxyTable: {
'/api': {
target: 'http://localhosst:8080/Maybe/', // 接口域名
changeOrigin: true, //是否跨域
// pathRewrite: {
// '^/api': '' //需要rewrite的,
// }
}
},
然後將axios的baseURL 設置爲'/api' 然後跨域的問題就解決了
( ps:封裝axios的時候 記得一定要攜帶cookie
axios.defaults.withCredentials=true //請求攜帶cookie
不然後端取到的session也是空的
)
但是這個時候 會出現一個問題 session 丟失的問題,接口是通的,但是後端卻取到的session確是空的
解決方法
proxyTable: {
'/Maybe': {
target: 'http://localhosst:8080/', // 接口域名
changeOrigin: true, //是否跨域
// pathRewrite: {
// '^/api': '' //需要rewrite的,
// }
}
},
注意:代理名要與application context相同;跨域changeOrigin: true;RewritePath,是將對資源的請求重定向到另一路徑,使其不同於所請求 URL 指示的路徑,根據實際情況看要不要加。
其實真正的session路徑在/Maybe下,但是上面這個請求雖然被代理到http://localhosst:8080/Maybe,很明顯的請求http://localhosst:8080/api/Maybe 所攜帶的cookie在/api路徑下面,在/api路徑找/Maybe下cookie肯定是找不到的啦,所以就出現了雖然能訪問到接口,但取到的session確是空的。