2016-03-24 17 views
1

ノードjsを初めて使用しました。私はノードでクッキーを取得して設定する方法を理解しています。 私はVisual Studioを使用しています。私は、自動的に作成される組み込みIIS Expressを使用しています。 私server.js上のサーバー・コードがあります:ノードjsでクッキーを設定できません

var express = require('express'); 
var cookieParser = require('cookie-parser') 

var app = express(); 
app.use(cookieParser()) 

app.use(function (req, res, next) { 
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:61342'); 
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); 
    res.setHeader('Access-Control-Allow-Credentials', true); 
    next(); 
}); 

app.get('/setCookie/:param', function (req, res) { 
    res.cookie('testCookie', req.params.param); 
    console.log('cookie created!'); 
    res.send(); 
}); 

var server = app.listen(8001, 'localhost', function() { 
    var host = server.address().address 
    var port = server.address().port 
    console.log("Server listening at http://%s:%s", host, port) 
}); 

は、これはクライアントコードです:

function server() { 
     xmlhttp = new XMLHttpRequest(); 
     xmlhttp.open("GET", "http://localhost:8001/setCookie/cookie1", true); 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       alert("ok"); 
      } 
     } 
     xmlhttp.send(); 
} 

私は(ちょうどテスト用)]ボタンをクリックしたときに、私はこのfuncionを呼び出します。 localhost:8001/getCookie/cookie1と入力すると、正確にクッキーが設定されていることがわかります(私はブラウザのコンソールでdocument.cookieと入力して見ることができます) localhostでプロジェクトを実行すると:61342/

Request URL:http://localhost:8001/setCookie/cookie1 
Request Method:GET 
Status Code:200 OK 
Remote Address:127.0.0.1:8001 

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:X-Requested-With,content-type 
Access-Control-Allow-Methods:GET, POST, OPTIONS, PUT, PATCH, DELETE 
Access-Control-Allow-Origin:http://localhost:61342 
Connection:keep-alive 
Set-Cookie:testCookie=cookie1; Path=/ 

をしかし、私は、ブラウザのコンソールdocument.cookieに入力するとき、私は何も表示されません。機能サーバを()を呼び出すボタンをクリックして、私はこの応答を取得します。 これをどのように解決できますか? 忍耐ありがとうございます

答えて

0

ここには2つの別の問題があります。

まず:

document.cookie文書の起源に属するクッキーが表示されます。クロスオリジンAjaxリクエストは、リクエストを行っている起点のクッキーを送信して保存します。それは別の起源なので、document.cookieには表示されません。それらを調べるには、それらが属している原点を要求し、[ネットワーク]タブでそれを調べる必要があります。

第二:

クロスオリジンリクエストは、デフォルトではクッキーをサポートしていません。最初にset withCredentialstrueにする必要があります。

関連する問題