IIS 的 ProxyPassReverseCookieDomain 等效项
ProxyPassReverseCookieDomain equivalent for IIS
我使用 IIS 并 URL 重写为 reverseProxy。我的实际 Web 应用程序托管在无法直接访问 Internet 的服务器上。
在重写规则中,我将反向代理的主机名替换为本地 IP 地址。这很好用。
但是,我使用的应用程序提供下载。一旦客户端发出下载请求,服务器端进程就会重定向到实际的下载文件。
这是我遇到的问题。似乎会话 cookie (JSESSIONID) 没有在反向代理和本地服务器之间正确共享。我没有被重定向到下载文件,而是从本地服务器收到一条 401 "not authorized" 消息。
我在这里发现了一个类似的问题。
How to properly set JSESSIONID cookie path behind reverse proxy
用户正在使用 Apache 作为反向代理,并正在使用 ProxyPassReverseCookieDomain
重写 cookie 域名。
IIS中有没有类似的设置?
我尝试了以下出站规则,但这不起作用。
<preCondition name="contains-domain-set-cookie-header">
<add input="{RESPONSE_Set_Cookie}" pattern=".*?domain=MYDOMAIN*?" />
</preCondition>
<rule name="rewrite cookie domain" preCondition="contains-domain-cookie-header">
<match serverVariable="RESPONSE_Set_Cookie" pattern="^(.*?domain=)MYDOMAIN(.*?)$" negate="false" />
<action type="Rewrite" value="{R:1}MYLOCALIP{R:2}" />
</rule>
还有其他方法可以解决这个问题吗?
谢谢,
托马斯
找到答案here and here
保留主机头 运行 从命令行更新 Machine/webroot/apphost 配置
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
我使用 IIS 并 URL 重写为 reverseProxy。我的实际 Web 应用程序托管在无法直接访问 Internet 的服务器上。
在重写规则中,我将反向代理的主机名替换为本地 IP 地址。这很好用。
但是,我使用的应用程序提供下载。一旦客户端发出下载请求,服务器端进程就会重定向到实际的下载文件。
这是我遇到的问题。似乎会话 cookie (JSESSIONID) 没有在反向代理和本地服务器之间正确共享。我没有被重定向到下载文件,而是从本地服务器收到一条 401 "not authorized" 消息。
我在这里发现了一个类似的问题。
How to properly set JSESSIONID cookie path behind reverse proxy
用户正在使用 Apache 作为反向代理,并正在使用 ProxyPassReverseCookieDomain
重写 cookie 域名。
IIS中有没有类似的设置? 我尝试了以下出站规则,但这不起作用。
<preCondition name="contains-domain-set-cookie-header">
<add input="{RESPONSE_Set_Cookie}" pattern=".*?domain=MYDOMAIN*?" />
</preCondition>
<rule name="rewrite cookie domain" preCondition="contains-domain-cookie-header">
<match serverVariable="RESPONSE_Set_Cookie" pattern="^(.*?domain=)MYDOMAIN(.*?)$" negate="false" />
<action type="Rewrite" value="{R:1}MYLOCALIP{R:2}" />
</rule>
还有其他方法可以解决这个问题吗?
谢谢,
托马斯
找到答案here and here
保留主机头 运行 从命令行更新 Machine/webroot/apphost 配置
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost