編集 - Chrome Web インスペクターを使用して Cookie を見ると、Cookie の有効期限の値に関係なく、ブラウザーはそれをセッション Cookie として設定し、リクエストごとに削除するようです。
Node.js と Express を使用して、教えているクラスの CORS の例を作成しています。
ただし、Cookie はサーバーから設定されていますが、次の要求でサーバーに送り返されていません。これは、簡単なセッションマネージャーを使用できないことを意味します。
ここで何が欠けているのか分かりますか? ブラウザーがドメインによって設定された Cookie をそのドメインに送り返さないのはなぜですか? これは自動的に行われるべきではありませんか?
編集 - いくつかのコード例: XHR リクエストの設定:
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.widthCredentials = true;
xhr.onreadystatechange = function(res){
if (xhr.readyState == 4){
cb(res,xhr);
}
};
xhr.setRequestHeader("Content-Type",'application/json');
xhr.setRequestHeader('Accept','application/json');
xhr.send(JSON.encode({param:some_param}));
サーバ:
function allowCrossDomain(req,res,next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type,Accept,X-Requested-With');
if (req.method!='OPTIONS') return next();
res.send(204);
}
//while configuring express
app.use(allowCrossDomain)
npm
また、目に見える違いなしで同じことを行うさまざまなミドルウェアを試したことにも言及する価値があります
シナリオについて:
- XHR を使用して CORS リクエストを行う
- サーバーは、クライアントに正常に送り返される Cookie を設定します (高速セッション Cookie)。
- 次の XHR リクエストはその Cookie をサーバーに送り返さないため、express はユーザーを識別できず、新しいセッション Cookie などを作成します。