【问题标题】:Should PHP header locations be encoded?是否应该对 PHP 标头位置进行编码?
【发布时间】:2014-08-12 12:48:49
【问题描述】:

是否应该对 PHP 标头位置进行编码?

header("Location: ".$_SERVER["REQUEST_URI"]);
header("Location: ".rawurlencode($_SERVER["REQUEST_URI"]));

如果是,为什么、何时以及如何?

【问题讨论】:

    标签: php http http-headers


    【解决方案1】:

    如果您的网址中有一些特殊字符(在RFC1806 中定义),您只需对其进行编码。特别是您应该使用以下字符对所有 URL 进行编码:{}|\^~[]`(从 RFC1738 开始)

    【讨论】:

    • 是的,但相关规范是 RFC 7231 和 RFC 3986。
    • 如果我不这样做会怎样? PHP 的REQUEST_URI 是否需要编码,或者在传递到服务器时是否已经需要编码?我应该使用rawurlencode() 编码吗?
    • @user1032531 我从未尝试过,但可能是链接断开左右,也可能什么也没有。 PHP 在编码输入方面似乎真的很奇怪。我只尝试了整个字符串`得到了编码。所以是的,您还应该编码REQUEST_URI。这取决于您的要求,无论何时您需要 rawurlencode 或 urlencode。可以在此处找到详细答案:stackoverflow.com/questions/996139/urlencode-vs-rawurlencode@JulianReschke 在 5.3 PHP 之前使用 RFC1738,但您是对的。
    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2018-02-13
    • 2011-02-06
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多