IIS实现反向代理时Cookie域的设置方法

admin3年前网站建设72

反向代理

神马是反向代理?指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。我们可以通过反向代理实现负载平衡、突破防火墙限制等一些非常实用的Web服务器功能,目前反向代理不管在私有云还是公有云的虚拟机上用的很多很多。

引用

IIS通过URL重写可以实现反向代理,通过简单的配置即可以将请求转发到其它内部站点。

此时被代理的所有站点的cookie的域(domain)会自动设置为提供反向代理功能的站点的域,这一般来说没有问题。但是在多站点共享cookie时会存在问题。

比如有一个对外的域名 proxy.fireflysoft,这个域名指向一个提供反向代理的站点;然后还有一个域名pay.fireflysoft,指向一个独立的IIS站点,提供支付服务;然后proxy.fireflysoft/mall 提供商城服务,用户在这里下单后支付,需要跳转到pay.fireflysoft;

为了在这两个站点之间实现用户状态共享,这里希望他们之间可以共享SessionID,这个值保存在cookie中,所以实际上是期望共享cookie,共享cookie可以通过设置不同站点cookie的域为相同的值来实现。

比如这里希望proxy.fireflysoft和pay.fireflysoft的cookie域值都为fireflysoft,这样proxy.fireflysoft的用户状态就可以为pay.fireflysoft所使用。但是这面临上边提到的反向代理站点cookie域自动设置问题。

关于这个问题,网上可以搜索到的方案大部分都是Nginx的,其实IIS的URL重写也是支持的,只不过用的人可能比较少,所以查不到什么资料。

这个解决方案是在IIS的论坛上找到的,有人问同样的问题:forums.iis/t/1193378.aspx。帖子中并没有给出直接的答案,而是参考一个使用URL重写设置cookie HttpOnly的方案:

clarify.dovetailsoftware/gsherman/2011/01/20/using-the-url-rewrite-module-to-set-your-cookies-to-httponly/

有兴趣的可以读一下原文,下边将直接给出解决方案。

URL重写的规则会保存到web.config中,因为设置cookie属于URL重写的出站规则,所以直接在出站规则中增加相关配置:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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" />
     <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:针对响应时设置cookie,且没有设置cookie domain的情况;

然后是处理规则rule:针对响应时设置的cookie,重写cookie,增加domain的设置。

这样cookie domain即设置为目标值,从而实现cookie在二级域名之间的共享。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。

原文链接:blog.bossma/server/iis-reverse-proxy-cookie-domain-setting/

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

网站建设中什么是版式设计?

版式设计是网页设计中必不可少的一个环节,它关乎页面的结构、布局、排版及样式等方面,版式设计的目的在于使网页具有良好的视觉效果和易于使用的用户体验,为用户在浏览网页时提供更舒适的感受。 版式设...

首页网站制作有哪些需要特别注意的地方?

网站制作中较重要的也是较先考虑的就是通过主页的建设,一个企业网站的主页建设的怎么样?直接影响了用户的体验,网站排名流量等,那么主页的网站制作有哪些需要特别注意的地方? 首先:网站首页进行设计...

重庆网站在哪备案

很多打算做网站的小白对网站建设这块不是很清楚,都不知道需要做网站备案事宜。通常发布给国内人看的网站,为了让网站的反映速度以及运行正常化,百分之九十的客户都会选择国内服务器。按照国家相关规定要求,国内服...

你必须学会找最容易的QQ群营销方法

 QQ群营销是比较常见的网络推广方法,不过,因为很多朋友都因为操作方法的不合适造成了效果差强人意。QQ群,一般都是聚集着有某种共同爱好或是目的小圈子。很多QQ群看似人很多,很热闹,但是实则变现的难度很...

网站制作中哪些细节影响着百度蜘蛛的抓取频率?

网站抓取的频率对于网站优化非常重要,那么是什么因素决定了网站抓取的频率呢?关于这个问题,小编带你详细了解一下。 1.网站安全 目前很多中小网站的安全技术还比较薄弱,黑客经常篡改。其...

网站建设之备案工作心得

做了快一年的备案工作,我自认在这个领域仍是一名新人。备案要求和规定的不断调整和更新使得在某些个别项目上仍不断的接受着“备案退回”的惨状。在适应的过程中迎接新的挑战,这也能算一项...