asp.net-mvc – 为什么ASP.NET在静态图像请求上形成身份验证设置Cookie?

我有一个ASP.NET(MVC)网站,提供静态内容(图像)以及来自同一个域的动态内容.该站点使用表单认证,并具有登录控制器.有一些非常奇怪/不正常的问题,人们发现自己以随机的时间间隔登录或登出,我们已经将其跟踪到一个问题,反向代理缓存一个具有设置cookie响应头的映像文件,验证Cookie.一旦缓存,每个人都会获得相同的验证cookie,这将导致一些非常奇怪的结果.

我的问题是 – 一个图像如何在一个地方得到一个set-cookie头首先?什么是ASP.NET表单认证模块做这个导致这一点 – 当然它将cookie设置为主要的HTML内容响应.我得到的是,然后将所有后续请求发送到域,但我无法确定如何设置cookie首先.

(BTW这个问题也可能是至少有两个现有的大型电子商务网站遇到类似问题的原因,没有解决方案,所以这将是一个很好的解决方案).

响应如下所示(取自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上使用IIS 7.5,64位,该应用程序正在使用集成管道/ .net 4的应用程序池下运行.

更新2:我不是在寻找解决问题的方法,我们已经有一个.我正在寻找一个问题的答案,这是为什么它发生在第一位?请不要回答告诉我关于子域名或cookies如何工作!

更新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;

解决方法

看起来像IIS中的一个bug.我要写一些稻草人的代码,看看我是否完全了解发生了什么,并发布结果.我还将在IIS 7和IIS 7.5上测试它,看看它是否不同.

真的似乎没有一个请求应该得到与之前的请求相关联的任何cookie(我们没有在我们的网站上有任何缓存代理,这在我们的内部网络上发生,所以我的意思是,IIS正在做某事).

–Owen

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....