Фон:
Приложение rails, над которым я работаю, открывает статьи с других веб-сайтов в iframe. Но некоторые веб-сайты издателей (например, pitchfork.com, vox.com, medium.com) не открываются в окнах iframe, задавая в заголовке «X-Frame-Options: SAMEORIGIN». Итак, учитывая URL-адрес статьи, я пытаюсь изучить заголовок и либо открыть его в iframe (по умолчанию), либо открыть исходный сайт на новой вкладке (когда я обнаруживаю X-Frame-Options в заголовке).
Проблема:
Заголовок, который я извлекаю в Rails, иногда оказывается неполным, когда я извлекаю его (и печатаю в консоль) со следующим кодом:
puts y['site'] # example: "vox.com"
puts y['head'] # example: "/2016/1/25/10829662/obama-on-clinton-media"
require 'net/http'
http = Net::HTTP.start(y['site'])
resp = http.head(y['head'])
resp.each { |k, v| puts "#{k}: #{v}" }
http.finish
Пример: заголовок, который тянет rails для этой статьи vox.com (http://www.vox.com/2016/1/25/10829662/obama-on-clinton-media) выглядит следующим образом:
server: nginx/1.6.2
date: Fri, 29 Jan 2016 22:05:17 GMT
content-type: text/html
content-length: 184
connection: keep-alive
location: http://www.vox.com/2016/1/25/10829662/obama-on-clinton-media
Но когда я пытаюсь открыть iframe, хромированная консоль сообщает мне, что это невозможно, потому что для X-Frame-Options установлено значение SAMEORIGIN. После дальнейшего исследования на вкладке «Сеть» я смог изучить полный заголовок, и он выглядит следующим образом:
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=utf-8
Status: 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: max-age=0, must-revalidate
X-Request-Id: 693f75c9be4dde491ba3cd78232ac4870c4f82e2
X-Runtime: 0.404545
Content-Encoding: gzip
Via: 1.1 varnish-v4
Content-Length: 26450
Accept-Ranges: bytes
Date: Fri, 29 Jan 2016 22:10:47 GMT
Via: 1.1 varnish
Age: 106
Connection: keep-alive
X-Served-By: cache-jfk1034-JFK
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1454105446.991771,VS0,VE12
Vary: Accept-Encoding, Origin, X-Forwarded-Proto
Эта проблема возникает не для всех сайтов. Например, заголовок, который я извлекаю с сайта pitchfork.com, четко указывает на то, что для него установлены параметры x-frame-options. Но с такими сайтами, как vox.com и medium.com, заголовок, который я извлекаю, не показывает параметры x-frame (как и многие другие элементы, которые не учитываются).
Как я могу вытащить правильный / полный заголовок в моем контроллере Rails таким образом, чтобы всегда определять, есть ли в заголовке URL-адреса X-Frame-Options?