我遇到一个奇怪的行为与我的webapp到Safari浏览器(FF没有任何问题)。X-XSS-Protection假阳性?
的代码非常简单:
- 我有一个包含一些复选框的形式。
- 我点击提交按钮,通过POST发送数据到同一页面,其中一个PHP脚本写入一个cookie
- 然后,PHP重新加载相同的页面(“Location:index.php”) ;
不幸的是,我得到以下错误的Safari:
“拒绝执行内请求中找到脚本的一个JavaScript脚本源代码”
该页面不发送JavaScript或URL或其他恶意代码。 它只是从表单发布数据。 那么,我怎么能避免这种情况? 任何人都可以解释为什么Safari浏览器告诉我我想执行JavaScript代码? (当然,在页面顶部添加“header(”X-XSS-Protection:0“);”在页面顶部修复了这个问题,但我对这种对策不太满意......)
这是一些相关的代码部分(简体):
<?php
if(@$_POST["foo"] == "yes"){
$choice = join("-", $_POST["choice"]);
setcookie("bar",$choice, time()+900000);
header("Location:index.php");
}
?>
<form method="post" action="index.php">
<input type="hidden" name="foo" value="yes">
<p><input type='checkbox' name='choice[]' value='foo'> foo</p>
<p><input type='checkbox' name='choice[]' value='bar'> bar</p>
<p><input type='checkbox' name='choice[]' value='baz'> baz</p>
<input type="submit">
</form>
在此先感谢您的回复!
编辑:
- 我强烈怀疑的错误在我最喜欢的Safari(5)因为代码是在Safari 6(ML)可以正常使用,火狐和Chrome的版本。
- 将setcookie部分放在页面的顶部并在标题(“location:”)之后立即调用“exit”不能解决问题。
- 即使我把setCookie方法在一个单独的PHP脚本,并从这个新页面中重新载入页面,我得到了在Safari同样的错误5.
按照要求通过silverlightfox,这里的一些截图2页的HTTP响应头:
不确定,但你可以命名你的输入'选择[]'?它应该是“选择”吗? – Sablefoste
@Sable当然,他可以,如果他想要一个数组,他一定会。这与问题无关 –
您是否可以将导致错误出现的页面的完整HTTP响应添加到您的答案中? – SilverlightFox