【问题标题】:Cross domain form submission inconsistent跨域表单提交不一致
【发布时间】:2017-01-28 21:08:03
【问题描述】:

我有两个域 A 和 B。

A 托管一个表单A/inquire,该表单向B/form-submission 提交发布请求 B 在B/form-submission 接受POST 请求并重定向到A/thankyou

这里有一个棘手的问题是 A 从 <iframe> 中托管表单,因此当用户提交表单时,iframe 会反弹到 B,然后返回到 A。

大约 10-20% 的用户会遇到这样的问题:提交表单会导致 iframe 无法重定向到 A/thankyou,但表单数据始终会被保存,因此必须完成 B/form-submission 的脚本。

B/表单提交(PHP):

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding");
header('Access-Control-Allow-Methods: GET, POST, PUT');

... process form and insert data into db - works 100% of the time ...

header("Location: A/thankyou");
exit();

当然,我自己无法重现这个......

有没有办法提高它的可靠性?它似乎与我的表单处理无关,因为在重定向之前发生的最后一件事是始终通过的数据库插入。

【问题讨论】:

标签: php html cross-domain form-submit


【解决方案1】:

感谢评论者 Gabriel 和 Taron。

Ruby on rails 4 app does not work in iframe

在远程站点上破坏 iFrame 的设置是 X-Frame-Options。默认设置为 SAMEORIGIN,防止跨域加载内容:

config.action_dispatch.default_headers = {
    'X-Frame-Options' => 'SAMEORIGIN'
}

添加这个解决了我的问题

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多