2

現在、ログインとデフォルトの2つのページを持つWebアプリケーションがあります。

ログインページのコードビハインドでログインプロシージャが実行されたときにHTTPヘッダーに返される2xGUIDを作成しようと精力的に取り組んできました。次に、デフォルトページのページロードでこれらを読み上げたいと思います。

私はC#のHTTPヘッダーにかなり不慣れで、ログインから値を追加するために以前に次のことを試みましたが、成功しませんでした。

Request.Headers.Add("GUID", strGUID);
Response.Headers.Add("GUID", strGUID);

私が使おうとしていたデフォルトページの値を取得するには...

strGUID = Response.Headers.Get("GUID");

そして、私がそれに積み上げたすべてのカスタムがらくたのヘッダーを最終的にクリアするために、私は使用しようとしていました...

Response.Headers.Clear();

私はインターネットを見回してきましたが、これに関するチュートリアルや、同様のタスクを実行する方法の段階的な説明を見つけることができないようです。

4

1 に答える 1

4

HTTP はステートレス プロトコルであるため、HTTP ヘッダーを使用してリクエスト間でデータを共有することはできません。コード自体に問題はありませんが、ある応答 (login.aspx) でクライアントに送信された HTTP ヘッダーを次の要求 (default.aspx) でサーバーに送り返す必要があるという規則はありません。 )。これは、login.aspx から default.aspx へのリダイレクトを実行する場合でも当てはまります。リダイレクト自体は、それに続くページ ビューとは別のものだからです。

おそらくあなたが探しているのは、複数のリクエストに対応できるストレージです。そのために、Cookie を使用してブラウザに値を保存できます。

// Set in login.aspx
Response.Cookies.Add(new HttpCookie("Guid", Guid.NewGuid())

// Read in default.aspx
HttpCookie token = Request.Cookies["Guid"];

...またはサーバーに値を保存するためのセッションストレージ。

// Set in login.aspx
Session["Guid"] = Guid.NewGuid();

// Read in default.aspx
Guid token = (Guid) Session["Guid"];

Fiddlerなどのツールを使用してHTTP トラフィックを検査し、HTTP ヘッダーがどのように送信されるかをよりよく理解できます。

于 2012-12-17T21:01:23.760 に答える