【问题标题】:GET parameters raise a 406 errorGET 参数引发 406 错误
【发布时间】:2014-07-18 16:08:29
【问题描述】:

我有这个简单的 PHP 脚本:

<!DOCTYPE html>
<html lang="es-ES" xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-ES">
<head>
    <meta charset="iso-8859-1" />
</head>
<body><p><?php

if(isset($_GET['echo'])){
    echo $_GET['echo'];
}

?></p>
<form action="" method="get">
    <input type="text" name="echo" value="" />
</form>
<p>áéíóúàèìòùñ</p>
</body>
</html>

提交西班牙语单词“cañón”会生成 GET 参数字符串 ?echo=ca%F1%F3n,我的主机会回答 406 Not Acceptable 错误。保留字符集 iso-8859-1 对我来说很重要,并将脚本文件编码为 ANSI。

在表单元素中使用accept-charset="UTF-8" 属性可以避免错误,但在页面中回显的单词显示为“cañón”。

是否有某种配置 Apache 的方法,希望使用 .htaccess,以避免这种行为并在结果页面上正确呈现单词“cañón”?

感谢您的帮助。

【问题讨论】:

  • 危险:此代码为vulnerable to XSS。用户输入在插入 HTML 文档之前需要转义!
  • 我知道,昆汀。这只是一个测试脚本。

标签: php html .htaccess utf-8 get


【解决方案1】:

最后,问题的解决方案是要求我的主机检查mod_security 配置。他们以某种方式修复了它,现在脚本可以正常工作了。

【讨论】:

    【解决方案2】:

    我认为你不能使用“echo”这个词作为变量,因为它是 php 语法词之一。尝试使用不同的变量。

    【讨论】:

    • 不,这不是真的。例如,尝试用 $e 替换 $echo。没有任何变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2017-04-08
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多