我遇到了一个奇怪的行为,我的webapp进入了safari(FF完全没问题)。
代码非常简单:
不幸的是,我在Safari中遇到以下错误:
"拒绝执行JavaScript脚本。请求中找到的脚本源代码。"
该页面不发送javascript或URL或其他恶意代码。 它只是从表单POST数据。 那么,我怎么能避免这种情况呢? 谁能解释为什么safari告诉我我想执行javascript代码? (当然,在页面顶部添加"标题(" 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>
提前感谢您的回复!
编辑:
根据silverlightfox的要求,以下是2页的http响应标题的一些截图:
答案 0 :(得分:1)
设置Location
标题后,您应该拨打exit
。
这样可以防止对您的网页进行更多处理,并且其他响应将不会发送到浏览器(即使您在不调用exit
时重定向,仍会发送HTML内容)。
我的猜测是页面中某处有未编码参数的输出(在您的问题的代码段中没有)。在发送重定向标头后,查看页面输出以查看HTML内容是否无意中在HTTP响应正文中生成任何JavaScript代码。