參考這篇問題,主要是描述在支付頁面 retun 支付成功之後,跳回網頁會因為 cookie samesite 的問題導致會員登出,主要解法如同文中所敘述,需要把記錄 user 的 cookie samesite 改成 none,文中也提供了 apache 作法,這邊記錄一下其他作法,基本上都是沒成功的:
Nginx 於 server 的 Location 中填寫,可能是位置沒填寫正確,沒作用:
proxy_cookie_path ~^/(.+)$ "/$1;Secure;SameSite='None';Partitioned";
PHP 有兩種作法,一種是在程式中處理,參考這篇文章,在 session_start() 之前寫入:
session_set_cookie_params(['samesite' => 'None']);
不過他沒理我,在 php.ini 中替換:
session.cookie_samesite = "None"
注意 None 是字串,需要雙引號起來。 這個修改會對 session_cookie 起作用。
不過我的目的是為了修改 wordpress 網站,wp 的 auth cookie 是透過程式寫入的,檢查後也沒反應。鬱悶。
於是跑進去追了一下程式碼,發現他使用的 setcookie 是 php 7.2 以前的工法,可能是為了向下相容吧,但偏偏在 php7.2 寫入的方式和 php 7.3 不同(參考這裡),但因為 wp core 的寫法,導致無法 hack 從 define 設定的 cookiepath 中直接修改,鬱悶,總不能把網站環境再改回兩蔣統治時期,快樂的 php 7.1 or 7.2 ,這樣挺尷尬的,連 wp 升級都不行。
後來挖到了這則討論串,看起來 wordpress 他們也正在煩惱。於是在討論串中挖到了一個在 github 上的外掛:
GitHub – MikhailRoot/samesite-cookie-manager: Word Press plugin to manage SameSite cookie parameter …
github.comWord Press plugin to manage SameSite cookie parameter until WP Core will implement it. – GitHub – MikhailRoot/samesite-cookie-manager: Word Press plugin to manage SameSite cookie parameter until …
這個外掛看起來沒啥問題,經過安裝啟用檢查過後,看起來是可行的, auth 相關的 cookie 已經正確顯示 samesite 為 none 了。
這外掛設定的部分,如同 github 說明一樣,請在後台的「設定」選項中第一個「一般」,點進去以後會發現多一個 uthentication SameSite Cookie parameter 的設定,像是金流跳轉的問題,把他設定為 None 就可以嘍。

另外得提一下如果 goolge 關鍵字 「wordpress SameSite」 會搜到一款還正在架上間諜外掛,同評論所講的,我也不明白作者為什麼要上架這款外掛,有點坑,而且如果 php 有設定之後,安裝啟用這款外掛還會造成 cookie 錯誤。 此時可以體現測試環境的重要性。