在iframe中发布请求
我正在尝试在iframe中发出POST请求 iframe位于应用程序A中,并呈现应用程序B中的表单在iframe中发布请求,iframe,ruby-on-rails-5,cross-domain,csrf,Iframe,Ruby On Rails 5,Cross Domain,Csrf,我正在尝试在iframe中发出POST请求 iframe位于应用程序A中,并呈现应用程序B中的表单 两个应用程序都是不同的域 两个应用程序都在使用https 应用程序A是纯HTML,应用程序B是Rails 5.0应用程序 表单加载良好,在应用程序A上可见 不幸的是,当我按“提交”在iframe中发布表单时,返回了一个错误:无法验证CSRF令牌的真实性 应用程序A上的代码为: <iframe src="https://www.app-b.com"></if
- 两个应用程序都是不同的域
- 两个应用程序都在使用https
- 应用程序A是纯HTML,应用程序B是Rails 5.0应用程序
无法验证CSRF令牌的真实性
应用程序A上的代码为:
<iframe src="https://www.app-b.com"></iframe>
很明显,我对安全标头做了一些错误的处理,因为:
- 如果我没有包含
gem,则不会显示表单(正确行为)secure\u标题
- 如果我包括gem,并指定一个没有任何帧祖先的空块,则将显示该表单(错误行为):
- 如果我包括gem,并将App A作为框架祖先,则会显示表单(正确的行为)
<form action="/url/in/app_b" method="post">
...
</form>
SecureHeaders::Configuration.default do |config|
config.csp = {
frame_ancestors: %w('https://www.app-a.com')
}
end
SecureHeaders::Configuration.default do |config|
# nothing here
end