为另一个被302重定向到的域设置cookie

时间:2011-01-26 05:21:11

标签: http session cookies redirect

(这个问题更多的是现实检查而不是其他任何事情 - 我很确定这是可能的,但我想确定。)

我正在编写一个接收HTTP请求的代理服务器,将它们传递给远程服务器,并返回远程服务器的响应。

我遇到了一个问题,其中一个远程服务器响应是设置cookie的302重定向。这是一个例子:

server: nginx/0.7.65
date: Wed, 26 Jan 2011 04:42:18 GMT
connection: keep-alive
set-cookie: JSESSIONID=FFFFFFFUUUUUUUUUUU; Domain=.50.16.34.61; Path=/
location: http://50.16.34.61/client/whatever.html
content-length: "0"

当客户端遵循该重定向到50.16.34.61(与代理服务器不同的域)时,我注意到尚未设置cookie。

我是否尝试使用set-cookie指令的Domain部分做一些疯狂的事情?

修改

基本上,我做错了,根据http://www.ietf.org/rfc/rfc2109.txt,请求主机确实需要成为set-cookie指令中Domain的超集。

/悲伤-长号

2 个答案:

答案 0 :(得分:2)

Domain = cookie内容只有在浏览器要求的Host:标头是所用值的超集时才有效。

在您的情况下,您的代理服务器似乎假装是另一台服务器,因此拦截那些Location:和Set-Cookie:标题行以及其他许多内容可能是有意义的,并替换相关位以保持指着你的服务器。

答案 1 :(得分:1)

客户端遵循重定向到50.16.34.61,但该域名是否请求了该页面?代理不是问题 - 如果请求的资源(生成302)在不同的域上,则不能为不同的域设置cookie。

代理当然不应该妨碍。

编辑:坚持;这实际上不是HTTP代理服务器,而是代理服务器的HTTP服务器吗?