gpt4 book ai didi

asp.net-mvc - 为什么 ASP.NET 表单例份验证在静态图像请求上设置 cookie?

转载 作者:行者123 更新时间:2023-12-03 22:45:41 25 4
gpt4 key购买 nike

我有一个 ASP.NET (MVC) 网站,它提供静态内容(图像)以及来自同一域的动态内容。该站点使用表单例份验证,并具有登录 Controller 。人们发现自己以随机间隔登录或退出时出现了一些非常奇怪/不规则的问题,我们已将其归结为反向代理缓存图像文件的问题,该图像文件具有设置 cookie 响应 header 授权 cookies 。缓存后,每个人都会得到相同的身份验证 cookie,这会导致一些非常奇怪的结果。

我的问题是 - 图像首先如何获得 set-cookie header ?什么是 ASP.NET 表单例份验证模块会导致此问题 - 它肯定会在主要 HTML 内容响应上设置 cookie。我知道 auth cookie 然后与所有后续请求一起发送到域,但我无法弄清楚 cookie 是如何设置的。

(顺便说一句,这个问题也可能是至少两个存在类似问题的现有大型电子商务网站的罪魁祸首,没有解决方案,所以这将是一个很好的解决方案)。

响应如下所示(取自 fiddler)。

HTTP/1.1 200 OK
Cache-Control: public, max-age=86400,max-age=86400
Content-Type: image/png
Last-Modified: Thu, 04 Nov 2010 16:00:52 GMT
Accept-Ranges: bytes
ETag: "0528474397ccb1:0"
Server: Microsoft-IIS/7.5
Set-Cookie: my-auth-cookie=6BC25F1EF71989466A48C0120E7739E; path=/; HttpOnly
Date: Wed, 17 Nov 2010 17:15:08 GMT
Content-Length: 15790

更新:附加信息 - 我们在 Win2008 R2、64 位上使用 IIS 7.5,并且应用程序在使用集成管道/.net 4 的应用程序池下运行。

更新 2:我不是在寻找解决问题的方法,我们已经有了。我正在寻找这个问题的答案,这就是为什么它首先发生?请不要回答告诉我有关子域或 cookie 如何工作的信息!

更新 3:添加请求:
GET https://www.example.com/sprite.png HTTP/1.1
Host: www.example.com
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: my-auth-cookie=6BC25F1EF71989466A48C0120E7739E;

最佳答案

我怀疑这实际上不是 .NET 本身的问题,而问题的关键实际上是反向代理。

从表单验证路径提供静态内容时,与您的连接关联的 cookie 将随之发送。
因此,如果您以用户 X、 session 1 的身份登录并获取图像 foo.png,您的反向代理会看到 PNG 文件带有表明可以缓存的 header 。

下次请求该文件时,反向代理将直接提供该文件,以及它上次获取该文件时与该文件关联的 cookie。

作为一个实验,我建议设置反向代理来关闭它的缓存功能,看看问题是否仍然存在。

如果您确实需要反向代理来缓存内容 - 那么我建议您查看是否可以告诉代理忽略缓存文件的 cookie,或者将文件移动到另一个无 cookie/无身份验证的域。

关于asp.net-mvc - 为什么 ASP.NET 表单例份验证在静态图像请求上设置 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com