【发布时间】:2016-05-05 21:29:55
【问题描述】:
对http://example.com的第一个请求:
GET / HTTP/1.1
Host: example.com
Connection: close
User-Agent: Paw/2.3.3 (Macintosh; OS X/10.11.4) GCDHTTPRequest
此时,DNS 通过 302 将请求转发到 https://www.example.com。 (注意协议更改)
HTTP/1.1 302 Found
Location: https://www.example.com
此时 Paw 发出以下请求(此时为 https):
GET / HTTP/1.1
Host: www.example.com
并得到以下响应:
HTTP/1.1 302 Found
Server: Cowboy
Connection: close
X-Powered-By: Express
X-Frame-Options: SAMEORIGIN
Location: /verify-age
这就是事情变得有趣的地方。没有主机名信息的那个位置实际上向原始主机名和协议发出了下一个请求! (现在返回 http 请求这个请求?!):
GET /verify-age HTTP/1.1
Host: example.com
这会被 DNS 服务器拦截,当然会以 302 响应:
HTTP/1.1 302 Found
Location: https://www.example.com
回到正确的协议和 url,但循环当然会回到 302 重定向到 /verify-age,它会切换回原始协议和主机名!我们陷入了这个循环。奇怪的是 Chrome 没有遵循这个循环,但 Paw 遵循了。那么这里的坏人是谁呢?域名系统?爪子?节点?铬?
【问题讨论】:
-
我们已经在 Paw 2.3.4 luckymarmot.com/paw/updates/2.3.4 中修复了这个问题,您可以在 Paw 菜单中更新 > 检查更新...