因此我遇到了一個相當不尋常的問題。PHP - 無法從cURL響應設置RAW cookie
我已經得到了一個RESTful API,我將它連接到它,它的SignIn方法返回一個響應主體。響應內部是一個以字符串形式出現的授權令牌。然後我需要將該授權字符串設置爲cookie以便系統識別用戶已登錄。
我已經寫了PHP來執行cURL請求,該請求成功獲取響應授權代碼,但是該字符串包含「+」和「/」字符我需要設置原始cookie而不是常規cookie,因爲http編碼將生成一個包含「%2B」和「%2F」的cookie,代替「+」和「/」。
的問題是,我setrawcookie()返回false,其中setcookie()函數返回true,即使我通過它的參數相同。
而且,如果我走授權字符串就是這樣由PHP提出並設置靜態字符串與該複製的身份驗證字符串,setrawcookie成功。
由於某些原因,PHP不允許我使用cURL請求中的字符串數據創建原始cookie。有誰知道爲什麼會發生這種情況?
$data = array("Username" => $_POST['Username'], "Password" => $_POST['Password']);
$data_string = json_encode($data);
$ch = curl_init('https://cloudhub.quivers.com/api/v1/SignIn/Signin');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CERTINFO, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
echo curl_error($ch);
setrawcookie("AuthToken", $result, 0, "/", "www.quivers.com", 1);
在這種情況下,setrawcookie()失敗,但setcookie()工作。
響應主體看起來是這樣的: -
1DEbKeyynVTbXeRJ2i5j2+UgwgmuD17VgQtFbzg2LBLmXMLDUY5t9YV2wdqQOcycZumuzqHH3AJ8e8I3nao0VPBuELAoGa6T27jwgAAizCoSyu0maPnXzfFbYkMnOPRhak9/6fQMqspg...
是的,但是如果你在那裏發送一個原始的'+',並且接收端對這個字符串進行了解碼,那麼'+'就會變成一個空格並破壞你的字符串。就像setcookie去的那樣,它並不在乎那個字符串來自哪裏。一個字符串的一個字符串。 setcookie不知道它來自curl。 –