当前位置: 首页 > 编程笔记 >

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

微生智刚
2023-03-14
本文向大家介绍IIS实现反向代理时Cookie域的设置方法,包括了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重写的出站规则,所以直接在出站规则中增加相关配置:

<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在二级域名之间的共享。

总结

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

 类似资料:
  • 我有一个WordPress博客运行在反向代理(Apache)后面。 httpd。维奥斯特。形态: 博客工作正常,我可以以管理员身份登录,但当尝试保存设置或删除插件(出现wp_重定向)时,我会被重定向到登录页面,因为wordpress显然没有找到/接受会话cookie,并且操作没有完成。 因此,我增加了这一行: (请参阅Apache代理cookies仅适用于第一个应用程序) 这似乎解决了问题。然而,

  • 本文向大家介绍nginx https反向代理tomcat的2种实现方法,包括了nginx https反向代理tomcat的2种实现方法的使用技巧和注意事项,需要的朋友参考一下 反向代理 在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,

  • 问题内容: 假设我在Go中有一个中间件,我想用自己的值覆盖任何现有的标头。 然后我将其添加到这样的响应链中 不幸的是,如果authHandler或由DefaultServeMux调用处理的任何事情(例如,httputil.ReverseProxy.ServeHTTP),我最终在响应中会有两个Server标头。 我真正想要的是这样的: 但是,ServeHTTP的语义不允许这样做: ServeHTTP

  • 本文向大家介绍Nginx作为反向代理时传递客户端IP的设置方法,包括了Nginx作为反向代理时传递客户端IP的设置方法的使用技巧和注意事项,需要的朋友参考一下 nginx默认配置文件里面是没有进行日志转发配置的,这个需要我们自己手动来操作了,当然后端的real server不同时操作方法是不一样的,这里我们分别例举几种情况来说明一下。 nginx做前端,转发日志到后端nginx服务器: 因为架构的

  • 本文向大家介绍python cookie反爬处理的实现,包括了python cookie反爬处理的实现的使用技巧和注意事项,需要的朋友参考一下 Cookies的处理 作用 保存客户端的相关状态 在爬虫中如果遇到了cookie的反爬如何处理? 手动处理     在抓包工具中捕获cookie,将其封装在headers中     应用场景:cookie没有有效时长且不是动态变化 自动处理  使用sess

  • 本文向大家介绍Nginx反向代理websocket配置实例,包括了Nginx反向代理websocket配置实例的使用技巧和注意事项,需要的朋友参考一下 最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 1.下载 tengine 最近的源码 2.安装基础的依赖包 3.解压编译安装 nginx.conf 的配置如下: test