PHP头部位置应该进行编码吗?

5

PHP头部位置应该进行编码吗?

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

如果是这样,为什么?何时?如何实现?
1个回答

1

如果您的URL中有一些特殊字符(在RFC1806中定义),则只需要对其进行编码。特别地,您应该对以下字符的所有URL进行编码:{}|\^~[]` (根据RFC1738)


1
是的,但相关规范是RFC 7231和RFC 3986。 - Julian Reschke
如果我不这样做会发生什么?PHP的REQUEST_URI是否需要编码,还是在传递到服务器时已经被编码了?我应该使用rawurlencode()进行编码吗? - user1032531
@user1032531 我从未尝试过,但可能是损坏的链接或其他问题,也可能什么都没有。 PHP在编码输入方面似乎非常奇怪。我尝试了整个字符串,只有 ' 能够被编码。因此,您应该对 REQUEST_URI 进行编码。这取决于您的要求,无论您需要 rawurlencode 还是 urlencode。详细答案可以在此处找到:https://dev59.com/FHNA5IYBdhLWcg3wWscA @JulianReschke 在5.3之前的PHP使用RFC1738,但你是对的。 - Cheesi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接