那些年踩過的坑——node代理解決跨域的問題

在實際開發中,前後端分離的項目通常會需要同後臺開發人員聯調接口,不可避免的會碰到跨域的問題。雖說跨域問題最後基本都是後臺同事解決的,但是有時候爲了趕時間,沒轍只有自己來,使用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確是空的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章