레일즈에서 iframe을 사용하고 싶어요.

3524 단어 HTMLRubyRails

하고 싶은 일


・ 레일즈에서 iframe의 요청을 허용하려면 외부 사이트에
・전부 허가하면 뭐가 무서워서 특정 URL로 줄이려고

그래서


Rails에서
response.headers['X-Frame-Options'] = 'SAMEORIGIN'
설정되었습니다. iframe로만 자신의 영역을 표시할 수 있습니다
이번에는 특정 URL만 허용하므로 다음과 같이 설치합니다.
class HogeController < ApplicationController
    after_action :allow_iframe, only: [:hoge]

    def hoge
        render "hoges/index", layout: false
    end

    private
    def allow_iframe
        url = "https://hoge.com"
        response.headers['X-Frame-Options'] = "ALLOW-FROM #{url}"
        response.headers['Content-Security-Policy'] = "frame-ancestors #{url}"
    end
end

주의사항


여러분들이 많이 사용하는 크롬, 사파리 등 브라우저가 많아요.X-Frame-Options ALLOW-FROM지원되지 않는 문제
그래서 같이Content-Security-Policy frame-ancestors기술도 해주세요.
조사해 보니 IE를 제외하고는 모두 대응할 수 있어 안심

유효성 확인


Chrome DevToolsNetwork 패널에서 볼 수 있습니다.

X-Frame-Options 브라우저 지원 테이블  
X-Frame-Options ALLOW-FROM만 설정하면 대응하지 않는 브라우저에서 모든 URL을 허용하는 상태가 됩니다
컨텐츠 보안 정책 브라우저 지원 테이블  

좋은 웹페이지 즐겨찾기