最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

express如何解決ajax跨域訪問session失效問題詳解

 更新時(shí)間:2019年06月20日 09:02:39   作者:喜洋洋咯  
這篇文章主要給大家介紹了關(guān)于express如何解決ajax跨域訪問session失效問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近在學(xué)習(xí)express,就用以前做的項(xiàng)目來進(jìn)行express前后端分離的練手了,在做登陸注冊(cè)的時(shí)候發(fā)現(xiàn)跨域的時(shí)候,session的值是會(huì)失效的,導(dǎo)致session里面的數(shù)據(jù)獲取為undefined,網(wǎng)上找資料加上自己的不斷嘗試,終于找到了解決方法,簡(jiǎn)單記錄一下解決方法。

解決方法

1、客戶端因?yàn)閟ession原則上是需要cookie支持的,所以Ajax方法里面必須添加 xhrFields:{withCredentials:true},表示允許帶Cookie的跨域Ajax請(qǐng)求( 特別說明,只要使用的session都得加這句)

 $('#login').click(function () {
  $.ajax({
   url: 'http://localhost:3000/users/yzm',//服務(wù)端路由地址
   type: 'get',
   xhrFields:{withCredentials:true},
   dataType: 'json',
   success:function(data){
    $('#yzm_img').html(data)
   },
   error:function(){
    alert('error');
   }
  });
 });
 $('#form_login').submit(function (e) {/!*登錄*!/
  e.preventDefault();/!*阻止表單默認(rèn)事件,頁面全局刷新*!/
  var data=$('#form_login').serialize();/!*將表單里的數(shù)據(jù)包裝起來*!/
  $.ajax({
   url : 'http://localhost:3000/users/login',
   type : "post",
   data : data,
   xhrFields:{withCredentials:true},
   dataType:'json',
   success:function(msg) {
    alert("這是返回的數(shù)據(jù)"+msg);
   },
   error:function(err){
    alert("這是失敗的信息"+err);
   }
  });
 });

通過設(shè)置 withCredentials: true ,發(fā)送Ajax時(shí),Request header中便會(huì)帶上 Cookie 信息。

2、服務(wù)器端修改app.js文件

相應(yīng)的,對(duì)于客戶端的參數(shù),服務(wù)器端也需要進(jìn)行設(shè)置。

對(duì)應(yīng)客戶端的 xhrFields.withCredentials: true 參數(shù),服務(wù)器端通過在響應(yīng) header 中設(shè)置 Access-Control-Allow-Credentials = true 來運(yùn)行客戶端攜帶證書式訪問。通過對(duì) Credentials 參數(shù)的設(shè)置,就可以保持跨域 Ajax 時(shí)的 Cookie。

var express = require('express');
var session = require('express-session');/*引入會(huì)話變量*/

var app = express();
app.all('*', function(req, res, next) {
 res.header("Access-Control-Allow-Origin", "http://localhost:63342");//前端域名
 res.header("Access-Control-Allow-Credentials",'true');
 res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
 next();
});

特別注意:服務(wù)器端 Access-Control-Allow-Credentials = true時(shí),參數(shù)Access-Control-Allow-Origin 的值不能為 '*' ,必須為自己客戶端項(xiàng)目所在地址。

3、服務(wù)器中使用session

router.get('/yzm', function(req, res, next) {
 req.session.yzm='abcd';
}
router.post('/login', function(req, res, next) {
 console.log(req.session.yzm);
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • node.js實(shí)現(xiàn)BigPipe詳解

    node.js實(shí)現(xiàn)BigPipe詳解

    這篇文章主要介紹了node.js實(shí)現(xiàn)BigPipe詳解,BigPipe是 Facebook 開發(fā)的優(yōu)化網(wǎng)頁加載速度的技術(shù),BigPipe 的核心概念就是只用一個(gè) HTTP 請(qǐng)求,只是頁面元素不按順序發(fā)送而已,需要的朋友可以參考下
    2014-12-12
  • Node.js開發(fā) path路徑模塊詳解

    Node.js開發(fā) path路徑模塊詳解

    path 模塊是 Node.js 官方提供的、用來處理路徑的模塊,它提供了一系列的方法和屬性,用來滿足用戶對(duì)路徑的處理需求,這篇文章主要介紹了Node.js開發(fā) path路徑模塊,需要的朋友可以參考下
    2024-02-02
  • 基于Node.js實(shí)現(xiàn)nodemailer郵件發(fā)送

    基于Node.js實(shí)現(xiàn)nodemailer郵件發(fā)送

    Nodemailer 是一個(gè)簡(jiǎn)單易用的 Node.JS 郵件發(fā)送模塊(通過 SMTP,sendmail,或者 Amazon SES),支持 unicode,你可以使用任何你喜歡的字符集。Nodemailer是一個(gè)簡(jiǎn)單易用的Node.js郵件發(fā)送組件,需要的朋友可以參考下
    2016-01-01
  • nodejs中方法和模塊用法示例

    nodejs中方法和模塊用法示例

    這篇文章主要介紹了nodejs中方法和模塊用法,結(jié)合實(shí)例形式分析了nodejs方法與模塊的定義及使用方法,需要的朋友可以參考下
    2018-12-12
  • nodejs搭建本地服務(wù)器并訪問文件的方法

    nodejs搭建本地服務(wù)器并訪問文件的方法

    本篇文章主要介紹了nodejs搭建本地服務(wù)器并訪問文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Express作者TJ告別Node.js奔向Go

    Express作者TJ告別Node.js奔向Go

    TJ自我介紹: TJ Holowaychuk ,程序員兼藝術(shù)家,Koa、Co、Express、jade、mocha、node-canvas、commander.js等知名開源項(xiàng)目的創(chuàng)建和貢獻(xiàn)者。
    2014-07-07
  • 淺析Node.js 中 Stream API 的使用

    淺析Node.js 中 Stream API 的使用

    這篇文章給大家淺析node.js中stream api的使用,本文介紹的非常詳細(xì),涉及到node.js api,node.js stream相關(guān)知識(shí),感興趣的朋友可以參考下
    2015-10-10
  • Node.js中的WebSocket底層實(shí)現(xiàn)

    Node.js中的WebSocket底層實(shí)現(xiàn)

    WebSockets是基于HTTP的雙向通信協(xié)議,允許客戶端和服務(wù)器之間實(shí)現(xiàn)實(shí)時(shí)、持久的數(shù)據(jù)交換,本文詳細(xì)介紹了使用JavaScript和Node.js創(chuàng)建WebSockets服務(wù)器和客戶端的過程,感興趣的可以了解一下
    2024-10-10
  • node中Express 動(dòng)態(tài)設(shè)置端口的方法

    node中Express 動(dòng)態(tài)設(shè)置端口的方法

    本篇文章主要介紹了node中Express 動(dòng)態(tài)設(shè)置端口的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解nodejs異步I/O和事件循環(huán)

    詳解nodejs異步I/O和事件循環(huán)

    本篇文章主要介紹了nodejs異步I/O和事件循環(huán),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評(píng)論

湄潭县| 黔江区| 丰顺县| 桃源县| 天全县| 雷州市| 林周县| 廊坊市| 延长县| 灌云县| 黄石市| 嫩江县| 绵竹市| 大足县| 平湖市| 化德县| 顺平县| 蒙阴县| 怀仁县| 璧山县| 达尔| 磴口县| 金山区| 涞源县| 且末县| 阿巴嘎旗| 凤庆县| 波密县| 新昌县| 会昌县| 忻州市| 东平县| 安徽省| 资源县| 常熟市| 定陶县| 曲沃县| 郴州市| 邓州市| 剑河县| 手游|