簡體   English   中英

使用Cookie傳遞URL參數字符串

[英]Using cookies to pass URL param string

我有一個包含“!”的URL。 在查詢參數的值中。 我對cookie中的param字符串進行編碼並加載相關頁面。 從PHP:

foreach ( $_GET as $key => $value ){
    setcookie($key,$value,time()+60,'/');
}

在相關頁面中,cookie的值(通過javascript / jquery $ .cookie(“”)讀取)具有“!” 編碼為%21。

有人可以告訴我為什么嗎! 被編碼了嗎? 它不是cookie值中的有效字符嗎?

有兩個地方可以對數據進行編碼。 第一種是從$_GET數組中獲取時,可以對$value進行編碼,並可以通過使用rawurldecode()對其進行解碼。 可能發生的第二個地方是使用setcookie() 為了避免這種情況,請改用setrawcookie() ,它將設置原始cookie而不是編碼的cookie。

foreach ( $_GET as $key => $value ){
    setrawcookie($key, rawurldecode($value), time() + 60, '/');
}

有人可以告訴我為什么嗎! 被編碼了嗎? 它不是cookie值中的有效字符嗎?

看到這個答案 根據RFC 6265 , ! 是Cookie名稱和值中的有效字符。 如果php正在編碼! 這意味着它是一個錯誤。

要解決此問題,您可以執行@Andrew的建議,或使用一個名為js-cookie的庫,該庫允許使用converter攔截cookie的讀取,然后可以還原PHP在客戶端中執行的編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM