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

admin3年前网站建设14

反向代理

神马是反向代理?指以代理服务器来接受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/

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

相关文章

建设网站过程中容易忽略的问题

企业在建网站过程中有很多小的细节稍稍不注意就会影响整个网站的访问效果,下面建网站公司的小编就来谈一谈网站制作过程中比较容易忽略的几个问题。一、内容充实,但平淡没新意网站刚创建的时候,很多企业都要求将网...

付费转化率高达50%?乐学一百是这么做的

 互联网教育这几年开始持续火爆,摸索出来一些新的模式。同时,也有很多企业面临着巨大的危机或者挑战,他们不管是传统教育机构还是互联网教育机构,共同面临的问题都是付费转化率低,无法获得良好持续的商业模式。...

如何做好网站需明确功能及定位三大点架构站点

好的一个网站对于企业打开网络市场起到很重要的关联点,企业想要打开网络市场前提就是建设一个网站,那么对于企业来说建设一个网站就必须对网站明确好定位以及一个美好的形象设计才能搭建好网站。下面由做网站网络详...

IIS短文件名漏洞复现图文详解

一、漏洞描述此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外...

网站制作的格式有什么注意事项

现在很多人都会做网站建设,但是如何要在众多的网页设计中脱颖而出,首先格式上也要有一些注意事项,需要了解一下。 1、合理的页面版式,注重网页设计中页面的合理性,能够带给人赏心悦目的感觉,注重协...

一个好的网站制作需要重视哪些内容?

一个好的企业网站将能为企业发展产生许多益处,可是对于一些企业网站在网页页面排版设计、广告添加、功能添加等层面做的并不是非常好,让许多用户并不是很感兴趣,导致企业文化品牌产品形象损伤。武建汉网站公司认为...