C# HttpCookie到Cookie-如何处理缺少的域?
我正在ASP.NET中创建代理页(我需要绕过跨站点脚本限制)。我需要C# HttpCookie到Cookie-如何处理缺少的域?,c#,asp.net,.net,cookies,httpwebrequest,C#,Asp.net,.net,Cookies,Httpwebrequest,我正在ASP.NET中创建代理页(我需要绕过跨站点脚本限制)。我需要Page\u Load处理程序根据传入的请求向该页面发送HttpWebRequest var request = (HttpWebRequest)WebRequest.Create(urlToProxy); request.Method = "GET"; request.GetResponse(); 但是,我遇到了一些身份验证问题(是的,我确实正确设置了请求。凭据,这里没有显示),因此我想将cookie从传入请求(访问我的代理
Page\u Load
处理程序根据传入的请求向该页面发送HttpWebRequest
var request = (HttpWebRequest)WebRequest.Create(urlToProxy);
request.Method = "GET";
request.GetResponse();
但是,我遇到了一些身份验证问题(是的,我确实正确设置了请求。凭据,这里没有显示),因此我想将cookie从传入请求(访问我的代理页面)转发到此传出请求。你会认为这很简单:
request.CookieContiner = Request.Cookies;
然而,这不起作用。传出的HttpWebRequest
使用HttpCookie
s,而传入的HttpRequest
使用Cookie
s。这些类没有继承或接口关系(实际上一个在System.Net
中,另一个在System.Web
中)
我试图将HttpCookie
s复制到Cookie
s中,然后将它们添加到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
}
}
公共静态IEnumerable ToCookies(此HttpCookie cookie)
{
var cookies=新列表(cookie.Values.Count);
foreach(cookie.Values中的字符串键)
{
添加(新Cookie()
{
Domain=cookie.Domain,
Expires=cookie.Expires,
HttpOnly=cookie.HttpOnly,
Name=cookie.Name,
Path=cookie.Path,
安全=cookie.Secure,
Value=cookie.Values[key]
});
}
归还饼干;
}
...
var cookieContainer=新建cookieContainer();
foreach(Request.Cookies中的var httpCookie)
{
foreach(httpCookie.ToCookies()中的var cookie)
{
cookieContainer.Add(cookie);//此处引发异常
}
}
抛出的异常表示无法添加具有null
“域”的Cookie
。显然,一些HttpCookie
s具有null
“域”属性
有没有人对将HttpCookie
转换为Cookie
的最佳方法有什么建议?我希望我使用的任何解决方案都尽可能具有通用性(因此不涉及将已知域硬编码到新的Cookie
s中)
更好的是,有没有一种更简单的方法可以简单地使用HttpRequest
类而不是HttpWebRequest
类来完成我想要的任务?另一端的客户端是什么?它是一个网站吗?是的。以下是一些附加字符,可使此注释满足注释中字符的最小值。您确定domain=cookie.domain行上存在域吗?另外,为失败的域设置了哪些值?不,未设置任何内容<代码>cookie。域
为空。因此,问题就来了。如何最好地将HttpCookie
转换为Cookie
。