1

ASP .NET でプロキシ ページを作成しています (クロスサイト スクリプティングの制限を回避する必要があります)。このページへの受信リクエストに基づいPage_Loadてハンドラーを送信する必要があります。HttpWebRequest

var request = (HttpWebRequest)WebRequest.Create(urlToProxy);
request.Method = "GET";
request.GetResponse();

認証の問題がいくつか発生しています (はい、request.Credentials正しく設定されていますが、ここには表示されていません) ため、着信要求 (プロキシ ページにヒット) からこの発信要求に Cookie を転送したいと考えています。これは簡単だと思うでしょう:

request.CookieContiner = Request.Cookies;

ただし、これは機能しません。発信HttpWebRequestHttpCookies を使用し、着信HttpRequestCookies を使用します。これらのクラスには、継承やインターフェイスの関係はありません (実際、1 つは にSystem.Netあり、もう1 つは にありSystem.Webます)。

HttpCookies をsにコピーしてCookieに追加しようとしましたがCookieContainer、これも機能しません。

 public static IEnumerable<Cookie> ToCookies(this HttpCookie cookie)
 {
    var cookies = new List<Cookie>(cookie.Values.Count);
    foreach (String key in cookie.Values)
    {
        cookies.Add(new Cookie()
        {
            Domain = cookie.Domain,
            Expires = cookie.Expires,
            HttpOnly = cookie.HttpOnly,
            Name = cookie.Name,
            Path = cookie.Path,
            Secure = cookie.Secure,
            Value = cookie.Values[key]
        });                
     }
     return cookies;
 }

 ...

 var cookieContainer = new CookieContainer();
 foreach(var httpCookie in Request.Cookies)
 {
     foreach(var cookie in httpCookie.ToCookies())
     {
         cookieContainer.Add(cookie); //Exception thrown here
     }
 }

スローされる例外は、 「ドメイン」Cookieを持つ を追加できないことを示しています。nullどうやら、一部の にHttpCookienull「ドメイン」プロパティがあります。

この問題を回避する最善の方法について何か提案はありますHttpCookieCookie? 私が使用するソリューションは、可能な限り汎用的なものにしたいと考えています (したがって、既知のドメインを新しいCookies にハードコーディングする必要はありません)。

HttpRequestさらに良いことに、クラスではなくクラスを使用するだけで、やりたいことを簡単に行う方法はありHttpWebRequestますか?

4

0 に答える 0