2010-11-02 41 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的域部分)