我目前正在尝试使用它的SignIn函数连接我项目的RESTful API,后者返回一个授权令牌用作cookie。我们的大部分项目都是用C#编写的,但是我试图在PHP中创建一个SignIn方法并且遇到了一个问题。
我设法从API中取回授权令牌作为字符串,但每次我尝试将该字符串设置为cookie的值时,我回来的cookie中都包含不正确的字符。
例如,在我们的RESTful API上为SignIn设置的cookie如下所示:
1DEbKeyynVTbXeRJ2i5j2+UgwgmuD17VgQ
然而,使用setcookie()时我得到的cookie给了我......
1DEbKeyynVTbXeRJ2i5j2%2BUgwgmuD17VgQ
" +"角色正在转变为"%2B"。我听说过使用setrawcookie()作为解决方案,但是我的setrawcookie()返回false,其中setcookie()返回true。
这不起作用:
$result = curl_exec($ch);
echo setrawcookie("authtoken", $result, 0, "/", "www.arbitratum.com", 1);
这可行,但是给了我%2B代替+。
$result = curl_exec($ch);
echo setcookie("authtoken", $result, 0, "/", "www.arbitratum.com", 1);
有谁知道为什么这可能不起作用?或者我如何在我的cookie中获得正确的字符?当我回显$ result字符串时,浏览器中显示的字符串使用正确的" +"性格,所以我真的很困惑这个问题。
答案 0 :(得分:1)
Cookie是网址编码的,因此当通过HTTP +
发送被%2B
替换时,为了符合规范,每个浏览器和后端服务器都知道(或者知道)如何处理它。
所以问题是你如何处理C#
中的cookie ...你只是从请求中读取标题信息,然后你应该记住url解码值,这样你就会取回包含+
字符的字符串。