Vue+NodeJS的跨域請求如何保存session

今天一直在練習如何使用Vue,就把自己之前用node寫的個人博客改改,拿來當接口,涉及到跨域請求的問題,接下來簡單的說下自己所遇到的問題,和解決方法。


一. 用cors來實現跨域請求:

一想到跨域請求,腦子里首先出現的是jsonp,但是jsonp只能是get請求,在向后臺提交數據時顯然用get是不合適的,所以選擇用cors,用cors時后臺要實現相關的配置,如下:

var app = express();  //express框架

//設置跨域訪問  
app.all('*', function(req, res, next) {  
    res.header('Access-Control-Allow-Origin', "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");  
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");  
    res.header("X-Powered-By",' 3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");  
    next();  
});  

上面的設置就不一一解釋了,我想根據每個字段的值,應該都知道是干什么的,特別強調下:res.header('Access-Control-Allow-Origin', "*");,這樣設置允許所有的域,如果將*號改為指定的域,則表明只允許特定的域。

二. 如何來存session?

因為我用的是vue-resource插件,所以在每次跨域請求后臺時都是一個新的session,那么如何來保存我們的session呢?當然是要打開cookie了,這樣才能保證每次的session都不是新的。

了解cors的都知道,在后臺如果要允許提交cookie的話,要設置:Access-Control-Allow-Credentials:true,這樣后端才會接收前端發來的cookie,所以將后臺的跨域請求設置改一下就行了:

//將外源設為指定的域,比如:http://localhost:8080
res.header('Access-Control-Allow-Origin', "http://localhost:8080");
//將Access-Control-Allow-Credentials設為true
res.header('Access-Control-Allow-Credentials', true); 
    

當然只允許后臺接收cookie是不夠的,必須得有人發送cookie啊,所以前端的請求頭信息也是要變的,加上:withCredentials: true就可以了。

以用戶登錄為例:

    submit: function (){
      this.$http.post(this.url, {
        username: this.username, 
        userpass: this.userpass
      },{ 
        withCredentials: true  //打開cookie
      }).then( res => {
        console.log(res);
        if (res.body.result == 'ok'){
          this.$router.push({path: '/home'});
        }
      }).catch( error => {
        console.log(error);
      });
    }

就這樣簡單的設置一下就可以了,這也是第一次對cors的應用,希望對初學的你也有幫助!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言:對于跨域請求,很早之前就有去了解過,但因為一直關注的都是服務器后端開發,故也就僅僅停留在概念的理解上而沒有機...
    ken_ljq閱讀 89,896評論 6 128
  • 什么是跨域? 2.) 資源嵌入:、、、等dom標簽,還有樣式中background:url()、@font-fac...
    電影里的夢i閱讀 2,389評論 0 5
  • 瀏覽器在請求不同域的資源時,會因為同源策略的影響請求不成功,這就是通常被提到的“跨域問題”。作為前端開發,解決跨域...
    SCQ000閱讀 2,601評論 1 52
  • 2014賽季,大連阿爾濱隊中超聯賽排名倒數第二,確定降級。從大連萬達、大連實德,再到大連阿爾濱,大連足球第一次從中...
    帥氣的大腳兒閱讀 180評論 0 0
  • 每個人身上都有一種東西,感覺它被束縛住,有時候你想掙脫,卻沒有辦法。 生活就像是一個牢籠,有時候將人禁錮地喘不過氣...
    鐺妹閱讀 1,424評論 0 0