服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - IIS - IIS实现反向代理时Cookie域的设置方法

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

2020-05-25 14:15波斯码 IIS

这篇文章主要给大家介绍了关于IIS实现反向代理时Cookie域的设置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

反向代理

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

引用

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

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

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

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

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

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

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

http://clarify.dovetailsoftware.com/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.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:针对响应时设置cookie,且没有设置cookie domain的情况;

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

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

总结

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

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

延伸 · 阅读

精彩推荐
  • IIS建站助手无法安装iis-其他问题

    建站助手无法安装iis-其他问题

    问:建站助手无法安装iis服务,显示Run-timeerror\429\: Activexcan\t 服务器IP:127.0.0.1127.0.0.1127.0.0.1用户名:**********密码:********** ,建站助手无法安装iis 答:您好,...

    未知2042023-05-10
  • IIS远程分析win2003 IIS安全设置

    远程分析win2003 IIS安全设置

    提起微软公司 IIS web服务器的安全问题,很多人立刻就会联想到那些为人们所称颂的致命漏洞:UNICODE,CGI解析,.ida,idq,.Printer远程溢出等.这些伟大的漏洞恐怕是我...

    服务器技术网3722020-09-12
  • IISIIS调用X-Forwarded-For Header (XFF)记录访客真实IP的两种方法

    IIS调用X-Forwarded-For Header (XFF)记录访客真实IP的两种方法

    通过IIS发布的网站放到F5设备后边,通过透明监听模式WAF设备过滤后,公网访问者的真实IP被WAF设备IP替代,在网站日志看不到原来的真实IP了...

    hzfw200813292021-04-22
  • IIS如何备份和恢复IIS6和IIS7的设置

    如何备份和恢复IIS6和IIS7的设置

    Windows的IIS有一个非常“坑爹”的备份还原功能,和大部分备份还原不同的是,这个服务默认不支持不同电脑之间的备份还原,如果用户重装Windows的话,即...

    服务器技术网10482022-03-03
  • IIS云服务器怎么停止iis

    云服务器怎么停止iis

    云服务器 是一种虚拟化的服务器,它可以提供强大的计算和存储资源,让用户能够更灵活地部署和管理自己的应用程序和网站。在使用云服务器时,有时候...

    未知682023-09-06
  • IISIIS7.5使用web.config设置伪静态的二种方法

    IIS7.5使用web.config设置伪静态的二种方法

    IIS7.5使用web.config设置伪静态方法,有需要的朋友可以参考一下。...

    IIS之家4752020-08-28
  • IISIIS6架设网站过程常见问题解决方法总结

    IIS6架设网站过程常见问题解决方法总结

    很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,俺忙活了一下午,做了很多次试验,结合以前...

    IIS教程网7262021-08-24
  • IIS解决FastCGI 进程超过了配置的活动超时时限的问题

    解决FastCGI 进程超过了配置的活动超时时限的问题

    本篇文章是对解决FastCGI 进程超过了配置的活动超时时限的方法进行了详细的分析介绍,需要的朋友参考下 ...

    jingxian6562020-05-08