我们在heroku上运行了一个Rails应用程序,我们的资产通过cloudfront作为我们的第一个CDN分发
该网站可以直接从cloudfront url访问
该应用程序从blog
子域上单独服务器上运行的wordpress实例中提取外部图像,该子域使用cloudflare作为DNS提供程序。
只要从https://[redacted].cloudfront.net
的云端网址访问该网站,外部资产就可以正常加载。
https://[redacted].cloudfront.net/blog/1192
嵌入来自wordpress实例的图片。
以下是相关的请求标题:
GET /wp-content/uploads/2016/02/69blog-1-1024x604.jpg HTTP/1.1
Host: blog.meinbge.de
Connection: keep-alive
Cache-Control: max-age=0
Accept: image/webp,image/*,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.54 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
If-None-Match: "1fd6f-52be33056b1af"
If-Modified-Since: Tue, 16 Feb 2016 13:34:12 GMT
和回复:
HTTP/1.1 304 Not Modified
Date: Thu, 25 Feb 2016 13:33:11 GMT
Server: Apache/2.4.7 (Ubuntu)
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
ETag: "1fd6f-52be33056b1af"
如您所见,我们在资源上获得HTTP/1.1 304 Not Modified
状态。
现在,尝试从也适用于由cloudfront管理的站点tld请求相同的资产,我们发现在对外部资源的请求中引入了引用标头:
GET /wp-content/uploads/2016/02/69blog-1-1024x604.jpg HTTP/1.1
Host: blog.meinbge.de
Connection: keep-alive
Cache-Control: max-age=0
Accept: image/webp,image/*,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.54 Safari/537.36
Referer: http://heroku.mein-grundeinkommen.de/blog/1192
Accept-Encoding: gzip, deflate, sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
自注入Referer: http://heroku.mein-grundeinkommen.de/blog/1192
请求标头后,加载外部资源时出现403
错误:
HTTP/1.1 403 Forbidden
Date: Thu, 25 Feb 2016 13:45:42 GMT
Server: Apache/2.4.7 (Ubuntu)
Content-Length: 250
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
我们认为引用标题是由cloudflare引入的,但不确定如何删除它。
问题:我们如何从HTTP请求中删除上述请求标头?
答案 0 :(得分:0)
Referer是浏览器添加的标准做法。在您的情况下,很可能没有添加,因为您从非安全路径加载资产。出于安全原因,在这种情况下不会添加Referer标头,因为这会明确地公开客户端安全访问的页面。
您是否有机会在CloudFlare中使用SSL / TLS?因为那可能会导致引入Referer标头的触发器。