Dns 云峰;从子域加载资产时出现Cloudflare 403错误

Dns 云峰;从子域加载资产时出现Cloudflare 403错误,dns,cdn,amazon-cloudfront,cloudflare,Dns,Cdn,Amazon Cloudfront,Cloudflare,我们有一个运行在heroku上的Rails应用程序,我们通过cloudfront作为第一个CDN分发其资产。 该网站可直接从its访问。 应用程序从运行在博客子域上的单独服务器上的wordpress实例中提取外部图像,该服务器使用cloudflare作为DNS提供程序。 只要从的cloudfront url访问该网站,外部资产就可以正常加载 嵌入来自wordpress实例的图像 以下是相关的请求标头: GET /wp-content/uploads/2016/02/69blog-1-1024x6

我们有一个运行在heroku上的Rails应用程序,我们通过cloudfront作为第一个CDN分发其资产。
该网站可直接从its访问。
应用程序从运行在
博客
子域上的单独服务器上的wordpress实例中提取外部图像,该服务器使用cloudflare作为DNS提供程序。
只要从的cloudfront url访问该网站,外部资产就可以正常加载

嵌入来自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
状态

现在,我们尝试从站点适当的tld请求相同的资产,该tld也由cloudfront管理,我们观察到一个referer头被引入到对外部资源的请求中:

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
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
自从注入
Referer的请求头之后:http://heroku.mein-grundeinkommen.de/blog/1192
加载外部资源时出现
403
错误:

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
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
我们认为referer标头是由cloudflare引入的,但不确定如何删除它。

问题:如何从HTTP请求中删除前面提到的请求头?

引用器是浏览器添加的标准做法。在您的情况下,它很可能不会被添加,因为您正在从非安全路径加载资产。出于安全原因,在这种情况下不添加Referer头,因为这将在clear中披露客户端安全访问的页面


您是否正在将SSL/TLS与CloudFlare一起使用?因为这可能是导致添加Referer头的触发器。

是。我们确实在cloudflare上使用ssl,在heroku上使用ssl端点。您的示例URL d1rm3nbxa795it.cloudfront.net通过HTTP加载其资产,这意味着不会发送Referer