我使用 PHP 在 PHP 中生成会话 cookie
$cookie = random_bytes(64);
然后将此变量的值设置为 cookie:
setcookie('access', $cookie, time()+31536000, '/', false);
当我使用
function getAccessToken(){
var n = document.cookie.match(/access=([^;]+)(?:$|;)/i);
if (n && n.length)
return n[1];
}
在客户端,我得到
"%1D%D8%E1%3F%7E%3E%D7b%A5%04%3Bl%3A%ADB%DF%DAg%E5%1DH%0A%21%5E%15%D9%2Be8k%3A%E2%AF%CE7%F2%BF%5B%CB%14%95%CEO%28%60p%DF%FBeY%95%3C%86%B99U%B7%F1p%E0%AC%2B%C5%2F"
该值被发送到 Node.js websocket 服务器以对用户进行身份验证,但由于客户端的值已经错误,因此连接失败。当 PHP 接收到这个 cookie 时,它会自动解码,并$_COOKIE['access']
正确包含
��?~>�b�;l:�B��g�H
!^�+e8k:����7��[���O(`p��eY�<��9U��p ��+�/
我看到的所有地方都被告知使用decodeURI
/decodeURIComponent
和escape
,但是第一次抛出URIError: URI malformed
和第二次抛出对我没有丝毫帮助。
如何在客户端或 Node.js 上将此原始 URL 编码字符串转换为实际字符/字节的字符串(无论哪一方进行解码)?