在pageload中,如果你做Response.Cookies.Add(...,立即在下一行,你可以通过Request.Cookies访问该cookie(...
我知道在封面下,cookie会被.net添加到Request.Cookies中,但原始请求从未拥有该cookie.
如果我说的是正确的,为什么会这样?不应该在以下请求中提供cookie吗?不应该立即访问Request.Cookies(...是否为null?
我正在使用ASP.NET.我要么添加或设置一个cookie(取决于是否HttpRequest包含具有指定密钥的cookie),然后立即调用Response.Redirect.cookie未设置.这是正确的行为吗?在具有302状态代码的http响应期间设置cookie是否相互排斥?
if (context.HttpContext.Request.Browser.Cookies)
{
var cookies = context.HttpContext.Request.Cookies;
var stateCookie = new HttpCookie(SR.session, clientState.SessionId.ToString());
if (cookies.AllKeys.Contains(SR.session))
{
context.HttpContext.Response.Cookies.Set(stateCookie);
}
else
{
context.HttpContext.Response.Cookies.Add(stateCookie);
}
}
Run Code Online (Sandbox Code Playgroud)
asp.net response.redirect httpresponse httpcontext httpcookie
我有一个带有FormsAuthentication的Web应用程序,并且slidingExpiration="true"在我的web.config中没有在每个请求中返回一个cookie,但是当我看到HTTP事务时,我看不到webserver在每个请求中返回AUTH cookie.
检查文档,它应该.
slidingExpiration可选属性.指定是否启用滑动过期.滑动到期会重置cookie的活动身份验证时间,以便在单个会话期间对每个请求到期.此属性可以是以下值之一.值说明True指定启用滑动过期.将刷新身份验证cookie,并在单个会话期间对后续请求重置到期时间.False指定未启用滑动到期,并且cookie从最初发布cookie之后的设置间隔到期.默认值为True.
有谁知道它为什么没有按预期工作?
干杯.
我试图通过线程建立多个连接.
但是每个连接似乎都会覆盖其他连接,导致连接使用错误的cookie.
在线程类的构造函数内:
manager = new CookieManager();
manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(manager);
Run Code Online (Sandbox Code Playgroud)
有没有办法管理每个线程或每个类的cookie?
新的失败尝试:
现在每个线程都使用它自己的索引,但它们似乎仍然以cookie方式覆盖彼此.有任何想法吗?
public class threadedCookieStore implements CookieStore, Runnable {
CookieStore[] store = new CookieStore[1000];
int index;
public threadedCookieStore(int new_index) {
index = new_index;
// get the default in memory cookie store
store[index] = new CookieManager().getCookieStore();
// todo: read in cookies from persistant storage
// and add them store
// add a shutdown hook to write out the in memory cookies
Runtime.getRuntime().addShutdownHook(new Thread(this));
}
public void run() {
// todo: write …Run Code Online (Sandbox Code Playgroud) 我正在尝试与API建立连接。当我对此API调用方法时,它会通过HTTP标头发送一个cookie值作为响应。
该标头会自动添加到客户端“我的浏览器”吗?还是我必须先解析请求并使用创建cookie setCookie?
如果它没有自动添加cookie,是否可以这样做?
我对 Jmeter 相当陌生,因此无法弄清楚以下内容:我正在测试需要在标头中发送有效 cookie 的 Web 服务。我有一个用于验证用户 ID 和密码的端点 url。如何根据 url 验证凭据并为用户提取 cookie 并将其发送到 Jmeter 中请求的标头中?
我有一个单元测试,通过传入HttpRequestMessage实例和接收HttpResponseMessages实例来调用类库.这与ApiController在这方面测试WebApi非常相似.
我正在测试的代码添加了cookie HttpResponseMessage,并希望在后续的来电中看到这些cookie HttpRequestMessage,这就是浏览器(或HttpWebRequest)的行为方式.
我没有使用,HttpClientHandler因为请求实际上不是在网络上发送,而是使用HttpMessageHandler我初始化HttpClientwith 的模拟传递给产品.因此HttpClientHandler我无法访问cookie处理.似乎要获得我需要的cookie行为,我将不得不手动解析其中的cookie HttpResponseMessage,然后手动将它们序列化为HttpRequestMessage.这完全省略了CookieContainer正确应用cookie到正确请求的逻辑.
有没有更简单的方法?
我在我的ASP.NET MVC应用程序中使用了Glimpse,并且此后决定将其删除.我最初通过NuGet安装它并使用NuGet删除它.
似乎一切都消失了,除非我检查我仍然看到的cookie:
HTTP_COOKIE glimpseState = null; glimpseOptions = NULL; glimpseClientName = NULL; ASP.NET_SessionId = ....
::我在错误上从ELEMAH转储中提取上述内容.::
关于如何删除glimpseState = null的任何想法; glimpseOptions = NULL; glimpseClientName = NULL; 从饼干?我在app.configs/machine.configs/iis configs中搜索过,但没找到任何东西.
所以我在URL"mysite.com"上有一个站点,在"subdomain.mysite.com"上有另一个站点.用户帐户存储在"mysite.com"中,因此当我需要登录"subdomain.mysite.com"时,我将用户带到"mysite.com",他们输入他们的凭据正常验证它们并确保验证通过domain在cookie中设置cookie,可以在"subdomain.mysite.com" 中使用cookie,如下所示:
HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true);
cookie.Domain = ".mysite.com";
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
然后我将它们重定向回"subdomain.mysite.com",感谢用户在那里进行身份验证.
一切正常,除了退出时.当用户尝试从任何站点注销时,我按预期删除了身份验证cookie:
FormsAuthentication.SignOut();
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,cookie未被删除,用户仍然保持登录状态.
我试过直接使用Request.Cookies[FormsAuthentication.FormsCookieName]但仍然没有删除cookie .由于某些原因,Chrome非常紧张地坚持使用Cookie:我可以在Chrome的开发者工具中看到它.
我究竟做错了什么?救命!
subdomain forms-authentication logout httpcookie asp.net-mvc-4
由于 Chrome 将于SameSite=None2 月 4 日从 80 版本开始强制使用安全标志,因此我尝试使用以下代码行在我的 cookie 中设置此标志:
HttpCookie myCookie = new HttpCookie("XYZ");
myCookie.Value = newCookie;
myCookie.SameSite = SameSiteMode.None;
myCookie.Secure = true;
myCookie.Expires = DateTime.Now.AddYears(2);
context.Response.Cookies.Add(myCookie);
Run Code Online (Sandbox Code Playgroud)
但这些属性不起作用。即使将 .Net Framework 版本升级到 4.8 后,该标志也没有设置SameSite=None为 cookie 所需的值。另外,我面临的一个奇怪的问题是,当我在 web.config 中使用以下行时,在从服务器请求它时,该标志会在我的 cookie 中正确设置:
<sessionState cookieSameSite="None" />
<httpCookies sameSite="None" requireSSL="true" />
Run Code Online (Sandbox Code Playgroud)
但是,当我在负载平衡中执行相同的配置并在另一台服务器上发布时,它不起作用。
有谁知道如何在 C# 中直接设置这个东西吗?
感谢您提前的帮助
httpcookie ×10
asp.net ×4
cookies ×3
http ×2
api ×1
asp.net-mvc ×1
c# ×1
glimpse ×1
http-headers ×1
httpcontext ×1
httpresponse ×1
https ×1
java ×1
javascript ×1
jmeter ×1
logout ×1
mocking ×1
php ×1
samesite ×1
subdomain ×1