2010-11-02 51 views
0

我在我的IIS上有2个网站,它们在磁盘上具有相同的物理位置。例如:禁止网站响应请求,除了静态文件

www.xxx.com path on disk : c:\www\xxx.com 
img.xxx.com path on disk : c:\www\xxx.com 

我想这img.xxx.com仅如图像,CSS和JS文件的静态文件的响应。

我的主要目标是(使用img.xxx.com无Cookie的请求)服务不使用Cookie的域静态文件。但如果我写img.xxx.com浏览器,我看到与www.xxx.com相同的内容。我想阻止所有请求到img.xxx.com,除了图片,css和js请求。

我不想设定另一个文件夹img.xxx.com因为它是非常难受,所有图像URL更改为新的URL。

回答

0

我不认为你的想法会起作用。您需要一个物理上不同的域名才能拥有真正的“无Cookie”域名。

要保留用于提供静态内容的无Cookie域名,请注册一个新的域名并使用CNAME记录配置您的DNS数据库,以便将新域指向您现有的域A记录。配置您的Web服务器以便从新域中提供静态资源,并且不允许在此域中的任何位置设置任何Cookie。在您的网页中,引用静态资源的URL中的域名。

http://code.google.com/speed/page-speed/docs/request.html

+0

总之,把事情做对,你需要更改所有图片网址。 – 2010-11-02 22:09:22

0

我觉得这个想法会工作。浏览器通过两个不同的域名访问文件是不可能知道它们共享相同的底层目录的。

唯一的问题是,你需要过滤在img.xxx.com域文件类型的只是一个有限的列表访问。

您可以在IIS级别执行此操作 - 例如,为您要阻止的文件类型设置ISAPI重写http://www.isapirewrite.com/

您仍需要更改网址,在您的应用程序(即在HTML - 从www.xxx.com到img.xxx.com)。

我想你也能做到这一点使用asp.net - 通过该网站链接回下新域名和新的文件夹中建立一个新的asp.net网站,然后建立一个虚拟文件夹原始文件夹。然后,您可以通过新的asp.net web.config控制对文件类型的访问。再次,您需要更改html中的URL(从www.xxx.com到img.xxx.com/virtual_folder)。我从来没有尝试过这样的事情 - 所以也许这个想法在某处存在缺陷。

+0

一个无Cookie域名需要是一个完全不同的域名......一个带有Cookie的域名的子域名将无法使用。 – 2010-11-03 13:40:32

+0

我绝不是这方面的专家 - 但是如果我将DNS记录设置为将img.xxx.com指向一个IP,将www.xxx.com指向另一个IP,则两者之间不需要连接。为什么看着img.xxx.com的浏览器甚至会考虑www.xxx.com的存在?因此,关于子域名的争论似乎不大可能 - 事实上,这是img.xxx.com www.xxx.com的“子域名”? – 2010-11-04 20:32:46

+0

刚刚检查了几个这样做的网站 - 通常会看到www.xxx.com为主站点,static.xxx.com为静态服务站点。所以也许我误解了这个问题? – 2010-11-04 20:48:48

0

为什么不简单的HttpHandler是检查每个请求的URL,并抛出错误,如果域是img.xxx.com和文件也不是一成不变的?

也许有一个问题,但据我所知,这可以工作。

(只谈论了“阻止所有请求img.xxx.com除了图片,CSS和JS的要求”部分,不使用Cookie的域部分)