ASP .NET でプロキシ ページを作成しています (クロスサイト スクリプティングの制限を回避する必要があります)。このページへの受信リクエストに基づいPage_Load
てハンドラーを送信する必要があります。HttpWebRequest
var request = (HttpWebRequest)WebRequest.Create(urlToProxy);
request.Method = "GET";
request.GetResponse();
認証の問題がいくつか発生しています (はい、request.Credentials
正しく設定されていますが、ここには表示されていません) ため、着信要求 (プロキシ ページにヒット) からこの発信要求に Cookie を転送したいと考えています。これは簡単だと思うでしょう:
request.CookieContiner = Request.Cookies;
ただし、これは機能しません。発信HttpWebRequest
はHttpCookie
s を使用し、着信HttpRequest
はCookie
s を使用します。これらのクラスには、継承やインターフェイスの関係はありません (実際、1 つは にSystem.Net
あり、もう1 つは にありSystem.Web
ます)。
HttpCookie
s を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
どうやら、一部の にHttpCookie
はnull
「ドメイン」プロパティがあります。
この問題を回避する最善の方法について何か提案はありますHttpCookie
かCookie
? 私が使用するソリューションは、可能な限り汎用的なものにしたいと考えています (したがって、既知のドメインを新しいCookie
s にハードコーディングする必要はありません)。
HttpRequest
さらに良いことに、クラスではなくクラスを使用するだけで、やりたいことを簡単に行う方法はありHttpWebRequest
ますか?