我正在使用Java开发HTTP代理。我将所有数据从客户端重新发送到服务器而不触及它,但是对于某些URL(例如this),如果我通过我的代理连接,服务器将返回404错误。
请求的URL使用Varnish缓存,因此它可能是问题的根源。我无法重新配置它 - 它不是我的。
如果我直接使用浏览器请求该URL,则服务器返回200并正确显示图像。
我被困了,因为我甚至不知道该读什么以及如何撰写搜索请求。
非常感谢。
答案 0 :(得分: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