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

admin3年前网站建设47

反向代理

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

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

相关文章

为什么企业建网站后需要添加在线沟通工具?

尽管现在网站建设技术比较成熟了, 但很多企业建网站中很少考虑到在线沟通工具,尤其是对于产品销售型企业,网站添加在线功能更是尤为重要的。下面武汉建网站公司介绍网站中添加在线聊天三个原因:1.客户想要在线...

企业网站制作应考虑的四个方面

让企业网站制作设计可以满足您的业务发展目标并反映客户服务需求不再是一项艰巨的任务,因为信息技术使企业能够得到更好地了解他们的客户,并提供不可抗拒的产品。以下是企业网站制作需要考虑的一些关键因素。&nb...

网站建设版式和元素如何选择?

互联网的快速发展,越来越多的企业开始意识到拥有一个成功的网站对于企业的影响力是多么重要的。而一个成功的网站不仅需要有吸引人的内容,还需要一个能够吸引人的版面。在设计网站界面时,选择适合公司的版面样式和...

在网站制作过程中必须考虑哪些因素

网站可以通过根据其特定类型主要分为许多不同的类型,其中,展示型网站也是我们一个非常重要的类型,网站制作也是我们目前很常见的一种网站类型。可以说,目前对网站制作的需求也很高,那么网站制作过程中,必须考虑...

IIS 7.5 HTTP 错误 404.3 - Not Found错误的解决方法

iis7.5安装默认是不安装asp/php/jsp支持的解决办法也很简单再次安装IIS功能 在 万维网服务-应用程序开发上勾选asp 就万事大吉了。。。 故障现象:IIS 7.5 下载文件遇到 404...

网站建设包含了哪些构成要素?

对于一个网站的建设,网页的设计也是必不可少的。但无论网站页面是何种类型,何种风格,设计是精美还是平庸,从网页的主要构成要素来看,基本上是一致的。对于网页设计者来说,就是要通过对这些要素进行不同的结合从...