這篇文章主要介紹了IIS實現(xiàn)反向代理時如何設(shè)置Cookie域,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)是專業(yè)的港南網(wǎng)站建設(shè)公司,港南接單;提供做網(wǎng)站、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行港南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!反向代理
神馬是反向代理?指以代理服務(wù)器來接受Internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給Internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器。我們可以通過反向代理實現(xiàn)負(fù)載平衡、突破防火墻限制等一些非常實用的Web服務(wù)器功能,目前反向代理不管在私有云還是公有云的虛擬機(jī)上用的很多很多。
引用
IIS通過URL重寫可以實現(xiàn)反向代理,通過簡單的配置即可以將請求轉(zhuǎn)發(fā)到其它內(nèi)部站點。
此時被代理的所有站點的cookie的域(domain)會自動設(shè)置為提供反向代理功能的站點的域,這一般來說沒有問題。但是在多站點共享cookie時會存在問題。
比如有一個對外的域名 proxy.fireflysoft.net,這個域名指向一個提供反向代理的站點;然后還有一個域名pay.fireflysoft.net,指向一個獨立的IIS站點,提供支付服務(wù);然后proxy.fireflysoft.net/mall 提供商城服務(wù),用戶在這里下單后支付,需要跳轉(zhuǎn)到pay.fireflysoft.net;
為了在這兩個站點之間實現(xiàn)用戶狀態(tài)共享,這里希望他們之間可以共享SessionID,這個值保存在cookie中,所以實際上是期望共享cookie,共享cookie可以通過設(shè)置不同站點cookie的域為相同的值來實現(xiàn)。
比如這里希望proxy.fireflysoft.net和pay.fireflysoft.net的cookie域值都為fireflysoft.net,這樣proxy.fireflysoft.net的用戶狀態(tài)就可以為pay.fireflysoft.net所使用。但是這面臨上邊提到的反向代理站點cookie域自動設(shè)置問題。
關(guān)于這個問題,網(wǎng)上可以搜索到的方案大部分都是Nginx的,其實IIS的URL重寫也是支持的,只不過用的人可能比較少,所以查不到什么資料。
這個解決方案是在IIS的論壇上找到的,有人問同樣的問題:https://forums.iis.net/t/1193378.aspx。帖子中并沒有給出直接的答案,而是參考一個使用URL重寫設(shè)置cookie HttpOnly的方案:
http://clarify.dovetailsoftware.com/gsherman/2011/01/20/using-the-url-rewrite-module-to-set-your-cookies-to-httponly/
有興趣的可以讀一下原文,下邊將直接給出解決方案。
URL重寫的規(guī)則會保存到web.config中,因為設(shè)置cookie屬于URL重寫的出站規(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:針對響應(yīng)時設(shè)置cookie,且沒有設(shè)置cookie domain的情況;
然后是處理規(guī)則rule:針對響應(yīng)時設(shè)置的cookie,重寫cookie,增加domain的設(shè)置。
這樣cookie domain即設(shè)置為目標(biāo)值,從而實現(xiàn)cookie在二級域名之間的共享。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“IIS實現(xiàn)反向代理時如何設(shè)置Cookie域”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
網(wǎng)站標(biāo)題:IIS實現(xiàn)反向代理時如何設(shè)置Cookie域-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://redsoil1982.com.cn/article48/hpjhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、搜索引擎優(yōu)化、App開發(fā)、網(wǎng)站營銷、定制網(wǎng)站、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容