Ruby on Rails 4 앱이 iframe에서 작동하지 않습니다.
iframe을 통해 Rails 앱을 다른 웹 사이트에 삽입하려면 어떻게해야합니까?
RoR 3에서는 잘 작동하지만 RoR 4에서는 잘 작동하지 않습니다.
<iframe src="http://myrailsapp.com/" width="100%" height="50" id="rails_iframe">error!</iframe>
내 컨트롤러에서 verify_authenticity_token
및 protect_from_forgery
옵션 을 사용하려고했습니다 ... 다른 것 같습니다 (하지만 확실하지 않습니다).
upd. 예 : http://jsfiddle.net/zP329/
이는 기본적으로 추가 보안 프로토콜을 활성화하는 Rails 4와 관련이 있습니다. http://weblog.rubyonrails.org/2013/2/25/Rails-4-0-beta1/
원격 사이트에서 iFrame을 중단하는 설정은 X-Frame-Options입니다. 기본적으로 SAMEORIGIN으로 설정되어 콘텐츠가 도메인 간로드되지 않도록합니다.
config.action_dispatch.default_headers = {
'X-Frame-Options' => 'SAMEORIGIN'
}
새로운 기본 헤더에 대해서는 http://edgeguides.rubyonrails.org/security.html#default-headers 에서 읽을 수 있습니다 .
iFrame이 도메인 간 작동하도록 허용하려면 도메인 전체에서 X-Frame을 허용하도록 기본 헤더를 변경할 수 있습니다.
config.action_dispatch.default_headers = {
'X-Frame-Options' => 'ALLOWALL'
}
Rails 4
추가 기본 X-Frame-Options
의 HTTP 헤더 값을 SAMEORIGIN
. 이것은 보안에 좋지만 에서 호출 되기를 원할 때 다음을 수행 할 수 있습니다.action
iframe
모든 오리진을 허용하려면 :
class MyController < ApplicationController
def iframe_action
response.headers.delete "X-Frame-Options"
render_something
end
end
특정 출처를 허용하려면 :
class MyController < ApplicationController
def iframe_action
response.headers["X-FRAME-OPTIONS"] = "ALLOW-FROM http://some-origin.com"
render_something
end
end
사용 : after_filter
당신이 당신의 일보다 더 사용해야 할 때 action
에서 iframe
, 그것은 방법을 만들고 그것을 호출하는 좋은 아이디어이다 :after_filter
:
class ApplicationController < ActionController::Base
private
def allow_iframe
response.headers.delete "X-Frame-Options"
end
end
다음과 같이 컨트롤러에서 사용하십시오.
class MyController < ApplicationController
after_filter :allow_iframe, only: [:basic_embed, :awesome_embed]
def basic_embed
render_something
end
def awesome_embed
render_something
end
# Other Actions...
end
통해 : Rails 4 : 특정 작업을 iframe으로 삽입
I'm working with Rails 6 and Chromium 76. Previous solution with X-Frame-Options is not working. But I've noticed that it works very well when we attach online iframe with JS. So, I just made this simple solution in my view:
<div id='iframe_wrapper' 'data-iframe-content'='<iframe src="https://host.com/"></iframe>'>
</div>
...and add JS code like this:
$(document).ready(function() {
var wrapper = $('#iframe_wrapper')[0]
wrapper.innerHTML = wrapper.attributes['data-iframe-content'].value
})
ReferenceURL : https://stackoverflow.com/questions/16561066/ruby-on-rails-4-app-does-not-work-in-iframe
'Development Tip' 카테고리의 다른 글
send_file을 사용하여 Amazon S3에서 파일을 다운로드합니까? (0) | 2021.01.05 |
---|---|
git pull을 할 수 없습니다. (0) | 2021.01.05 |
오류! (0) | 2021.01.05 |
Node.js에서 디렉토리를 제거하지 않고 디렉토리에서 모든 파일을 제거하는 방법 (0) | 2021.01.05 |
하나의 메이크 파일 만 사용하여 하위 디렉토리의 소스로 메이크 파일을 생성하는 방법 (0) | 2021.01.05 |