gpt4 book ai didi

PHP cookie 特殊字符

转载 作者:行者123 更新时间:2023-12-02 01:20:30 24 4
gpt4 key购买 nike

我在 javascript 中的 cookie 中存储了多个信息。信息片段之间用“+”号分隔,例如 document.cookie ='cookie1'+'='+inf1+'+'+inf2

但是当我从 PHP 中回显这些 cookie 时,分隔的“+”号被替换为空格。

我尝试用addslashes进行回显,但没有成功。当我警告 JS 的 cookie 时,它​​没问题,它显示分隔“+”号。

有人知道这个问题的解决方案吗?

最佳答案

这很奇怪 - 没有任何规范表明 cookie 应该被视为 application/x-www-form-urlencoded :

  • Netscape’s original draft声明:

    NAME=VALUE

    This string is a sequence of characters excluding semi-colon, comma and white space. If there is a need to place such data in the name or value, some encoding method such as URL style %XX encoding is recommended, though no encoding is defined or required.

    这就是简单的 percent-encoding .

  • RFC 2109状态:

    cookie          =       NAME "=" VALUE *(";" cookie-av)
    NAME = attr
    VALUE = value

    其中attr指定为:

    attr            =       token
    value = word
    word = token | quoted-string

    并且 token 引用字符串HTTP/1.1中指定可以分别用这些正则表达式来表示:

      [!#$%&'*+\-.0-9A-Za-z^_`|~]+
    "([ \x21\x23-\x7E\x80-\xFF]|(\r\n)?[ \t]+|\\[\x00-\x7F])*"

    因此,这也不是 application/x-www-form-urlencoded,而是基于 HTTP 的扩展首选的不同格式。

  • RFC 2965关于 cookie 语法,没有指定任何与 RFC 2109 不同的内容:

    cookie          =       NAME "=" VALUE *(";" set-cookie-av)
    NAME = attr
    VALUE = value

因此,仅在 application/x-www-form-urlencoded 中替换的 + 不应被 cookie 中的空格替换。所以这是 PHP 的错误行为。

关于PHP cookie 特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com