IIS實(shí)現(xiàn)反向代理時(shí)Cookie域的設(shè)置方法
反向代理
神馬是反向代理?指以代理服務(wù)器來(lái)接受Internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給Internet上請(qǐng)求連接的客戶(hù)端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器。我們可以通過(guò)反向代理實(shí)現(xiàn)負(fù)載平衡、突破防火墻限制等一些非常實(shí)用的Web服務(wù)器功能,目前反向代理不管在私有云還是公有云的虛擬機(jī)上用的很多很多。
引用
IIS通過(guò)URL重寫(xiě)可以實(shí)現(xiàn)反向代理,通過(guò)簡(jiǎn)單的配置即可以將請(qǐng)求轉(zhuǎn)發(fā)到其它內(nèi)部站點(diǎn)。
此時(shí)被代理的所有站點(diǎn)的cookie的域(domain)會(huì)自動(dòng)設(shè)置為提供反向代理功能的站點(diǎn)的域,這一般來(lái)說(shuō)沒(méi)有問(wèn)題。但是在多站點(diǎn)共享cookie時(shí)會(huì)存在問(wèn)題。
比如有一個(gè)對(duì)外的域名 proxy.fireflysoft.net,這個(gè)域名指向一個(gè)提供反向代理的站點(diǎn);然后還有一個(gè)域名pay.fireflysoft.net,指向一個(gè)獨(dú)立的IIS站點(diǎn),提供支付服務(wù);然后proxy.fireflysoft.net/mall 提供商城服務(wù),用戶(hù)在這里下單后支付,需要跳轉(zhuǎn)到pay.fireflysoft.net;
為了在這兩個(gè)站點(diǎn)之間實(shí)現(xiàn)用戶(hù)狀態(tài)共享,這里希望他們之間可以共享SessionID,這個(gè)值保存在cookie中,所以實(shí)際上是期望共享cookie,共享cookie可以通過(guò)設(shè)置不同站點(diǎn)cookie的域?yàn)橄嗤闹祦?lái)實(shí)現(xiàn)。
比如這里希望proxy.fireflysoft.net和pay.fireflysoft.net的cookie域值都為fireflysoft.net,這樣proxy.fireflysoft.net的用戶(hù)狀態(tài)就可以為pay.fireflysoft.net所使用。但是這面臨上邊提到的反向代理站點(diǎn)cookie域自動(dòng)設(shè)置問(wèn)題。
關(guān)于這個(gè)問(wèn)題,網(wǎng)上可以搜索到的方案大部分都是Nginx的,其實(shí)IIS的URL重寫(xiě)也是支持的,只不過(guò)用的人可能比較少,所以查不到什么資料。
這個(gè)解決方案是在IIS的論壇上找到的,有人問(wèn)同樣的問(wèn)題:https://forums.iis.net/t/1193378.aspx。帖子中并沒(méi)有給出直接的答案,而是參考一個(gè)使用URL重寫(xiě)設(shè)置cookie HttpOnly的方案:
http://clarify.dovetailsoftware.com/gsherman/2011/01/20/using-the-url-rewrite-module-to-set-your-cookies-to-httponly/
有興趣的可以讀一下原文,下邊將直接給出解決方案。
URL重寫(xiě)的規(guī)則會(huì)保存到web.config中,因?yàn)樵O(shè)置cookie屬于URL重寫(xiě)的出站規(guī)則,所以直接在出站規(guī)則中增加相關(guān)配置:
<rewrite> <outboundRules> <rule name="Add Domain" preCondition="No Domain"> <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" /> <action type="Rewrite" value="{R:0}; domain=fireflysoft.net" /> <conditions> </conditions> </rule> <preConditions> <preCondition name="No Domain"> <add input="{RESPONSE_Set_Cookie}" pattern="." /> <add input="{RESPONSE_Set_Cookie}" pattern="; domain=.*" negate="true" /> </preCondition> </preConditions> </outboundRules> </rewrite>
代碼中包含兩部分:
首先是前提條件preConditions:針對(duì)響應(yīng)時(shí)設(shè)置cookie,且沒(méi)有設(shè)置cookie domain的情況;
然后是處理規(guī)則rule:針對(duì)響應(yīng)時(shí)設(shè)置的cookie,重寫(xiě)cookie,增加domain的設(shè)置。
這樣cookie domain即設(shè)置為目標(biāo)值,從而實(shí)現(xiàn)cookie在二級(jí)域名之間的共享。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Windows安裝nginx1.10.1反向代理訪問(wèn)IIS網(wǎng)站
- 用IIS配置反向代理實(shí)現(xiàn)方法(圖文)
- IIS防御小規(guī)模DDOS攻擊實(shí)例(反向代理)
- 在IIS7中應(yīng)用Application Request Routing配置反向代理的圖文教程
- 讓iis記錄nginx反向代理的真實(shí)ip
- Nginx反向代理+DNS輪詢(xún)+IIS7.5 千萬(wàn)PV 百萬(wàn)IP 雙線 網(wǎng)站架構(gòu)案例
- IIS中使用的ISAPI_Rewrite Full版本做反向代理詳解
- iis7 iis8反向代理規(guī)則編寫(xiě)、安裝與配置方法
相關(guān)文章
a.sp.net清除ListBox的列表項(xiàng)(刪除所有項(xiàng)目)
在網(wǎng)上搜索相關(guān)資料,相當(dāng)多用戶(hù)有相同要求,一次移除ListBox的列表所有項(xiàng)2012-01-01解決ASP.NET Core Mvc文件上傳限制問(wèn)題實(shí)例
本篇文章主要介紹了解決ASP.NET Core Mvc文件上傳限制問(wèn)題,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11c# .net在WEB頁(yè)中的COOKIES設(shè)置技巧
c# .net在WEB頁(yè)中的COOKIES設(shè)置技巧,需要的朋友可以參考下。2011-07-07微信公眾平臺(tái)開(kāi)發(fā)之認(rèn)證"成為開(kāi)發(fā)者".Net代碼解析
這篇文章主要為大家詳細(xì)解析了微信公眾平臺(tái)開(kāi)發(fā)之認(rèn)證"成為開(kāi)發(fā)者".Net代碼,感興趣的小伙伴們可以參考一下2016-06-06CommunityServer又稱(chēng)CS論壇的相關(guān)學(xué)習(xí)資料
以前項(xiàng)目需要整合這個(gè)論壇,同事找了一些資料,現(xiàn)在放上來(lái),并說(shuō)下自己對(duì)這個(gè)論壇的看法。2009-05-05ADO.NET通用數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)
這篇文章主要為大家介紹了ADO.NET通用數(shù)據(jù)庫(kù)訪問(wèn)類(lèi),利用ADO.NET的體系架構(gòu)打造通用的數(shù)據(jù)庫(kù)訪問(wèn)通用類(lèi),感興趣的小伙伴們可以參考一下2016-03-03高效的.Net UDP異步編程實(shí)現(xiàn)分析
重點(diǎn)是怎么建立一種高效的UDP機(jī)制來(lái)實(shí)時(shí)接收服務(wù)器發(fā)送過(guò)來(lái)的數(shù)據(jù)包.本文將介紹.Net UDP異步編程如何實(shí)現(xiàn)解決方案,有需求的朋友可以參考下2012-11-11讓GridView只更新某些特定的數(shù)據(jù)的方法
我又不希望所有的數(shù)據(jù)都可以修改,只希望修改某些特定的列,用下面的方法即可2008-10-10ASP.NET 緩存分析和實(shí)踐淺析提高運(yùn)行效率
說(shuō)到ASP.NET緩存,那就是:盡早緩存;經(jīng)常緩存您應(yīng)該在應(yīng)用程序的每一層都實(shí)現(xiàn)緩存。2010-02-02