2

ASP.NET Web API と SignalR を使用して Web アプリケーションを構築しています。私は HTTP についてかなりよく理解していますが、この問題は私には理解できません。

現在、この API へのすべての AJAX リクエストに Cookie を設定しています。API への後続の AJAX 要求は、問題なく Cookie を送信します。

ただし、接続を確立するSignalRリクエストでもこのCookieを使用したいのですが、Chromeによると、これらのリクエストではCookieが送信されていません。Cookie を HTTPOnly に設定しています。現在、すべてがローカルで実行されています。すべてのリクエストは に送信されlocalhost:portます。Cookie のドメインlocalhostも同様に設定されています。

私の SignalR 接続は次のようになります。

var connection = $.connection("/updates");
/* set handlers here */
connection.start(function () {
    console.log("connection started!");
});

Chrome はこれが CORS リクエストであると判断し、Cookie を保留しているようです。ただし、リクエストは同じドメイン上にあるため、これはあまり意味がありません。

4

1 に答える 1

2

Cookie について十分に理解していないことがわかりました。localhostブラウザーは、Cookie ドメインなどの TLD の処理に問題があるようです。したがって、Cookie がデフォルトでリクエストのドメインになるように、ドメインを未定義のままにしました。

/ただし、すべてのリクエストで Cookie が確実に送信されるようにするには、パス パラメータを設定する必要がありました。

これらの変更を行うと、すべてが期待どおりに機能し、Cookie が SignalR に明確に表示されるようになりました。

于 2013-01-10T22:22:34.687 に答える