2011-06-20 22 views
0

我将在下面描述我的具体情况,但这可能对许多Web混搭有用。了解受X框架选项保护的表单POST的状态

我的web应用程序通过填写表单然后提交它(通过javascript)POST到Twitter。该表单的target设置为iframe,其中有一个onload触发器。当调用onload触发器时,应用程序知道POST已完成。

直到Chrome版本11,它现在尊重推特在POST响应中发送的X-Frame-Options=SAMEORIGIN。 POST通过,但iframe's onload不再被调用。

它仍然可以在Firefox 4中运行,但我认为这是一个最终会修复的错误。

是否有任何其他方式知道POST的状态?我知道知道POST响应的内容会违反安全策略,但我对内容不感兴趣。我只想在POST完成时通知应用程序。

+0

你能使用AJAX的提交,而不是一个iframe?或者你不控制表单本身的内容? – kpozin

+0

@kpozon这是一个跨域请求,不可能没有iframe – HRJ

回答

1

如果您只需要知道POST何时提交,而不一定是否成功,则可以按间隔轮询iframe的contentWindowcontentWindow.document。如果您无法再访问其中一个对象,或者文档的内容为空,这意味着iframe已加载限制为X-Frame-Options的页面,这可能意味着提交已经过。这很不好,但看起来它可以用于这个目的。 (您可能需要通过几个组合来确定受限制的内置页框在目标浏览器中的内容。)

+0

会试试这个,但是像你说的那样,它是hacky。谢谢! – HRJ

0

您可以通过获取页​​面的标题来完成此操作。在PHP这将是什么样子,

$url = 'http://www.google.com';
print_r(get_headers($url));

+0

我正在寻找浏览器端解决方案。跨域限制通常不适用于服务器端。 – HRJ