【问题标题】:Getting 404 error if requesting a page through proxy, but 200 if connecting directly如果通过代理请求页面,则会出现 404 错误,但如果直接连接,则会出现 200
【发布时间】:2015-09-14 20:12:05
【问题描述】:
我正在用 Java 开发 HTTP 代理。我将所有数据从客户端重新发送到服务器而不接触它,但是对于某些 URL(例如 this),如果我通过代理连接,服务器会返回 404 错误。
请求的 URL 使用 Varnish 缓存,因此它可能是问题的根源。我无法重新配置它 - 它不是我的。
如果我直接通过浏览器请求该 URL,服务器会返回 200 并且图像会正确显示。
我被卡住了,因为我什至不知道要阅读什么内容以及如何编写搜索请求。
非常感谢。
【问题讨论】:
标签:
http
proxy
http-status-code-404
varnish
【解决方案1】:
修复重发请求的Host: 标头。从代理发出的请求要么没有 Host 标头,要么已损坏(或仅存在 X-Host)。另请注意,代理应用程序将执行其自己的 DNS 查找,这可能会产生与您的本地计算机(您发出原始请求的地方)不同的 IP 地址。
这行得通:
> curl -s -D - -o /dev/null http://212.25.95.152/w/w-200/1902047-41.jpg -H "Host: msc.wcdn.co.il"
HTTP/1.1 200 OK
Content-Type: image/jpeg
Cache-Control: max-age = 315360000
magicmarker: 1
Content-Length: 27922
Accept-Ranges: bytes
Date: Sun, 05 Jul 2015 00:52:08 GMT
X-Varnish: 2508753650 2474246958
Age: 67952
Via: 1.1 varnish
Connection: keep-alive
X-Cache: HIT