亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firefox 不符合 RFC6265 關于處理 cookie 的路徑屬性

Firefox 不符合 RFC6265 關于處理 cookie 的路徑屬性

PHP
米琪卡哇伊 2022-01-02 19:36:31
我正在編寫一個 PHP 類來處理/解析Cookie和Set-CookieHTTP 標頭以在我的自定義用戶代理(爬蟲、抓取工具、機器人等)中使用它,在測試它時我發現它的行為與 Firefox 在他們處理標頭中的Path屬性的方式Set-Cookie。我回到了RFC 6265,我是對的###如何重現?在任何 PHP 文件中設置這一行并請求它<?phpheader("set-cookie: foo=1; path=/bar/", true);exit;現在/bar用 Firefox請求,你會看到 Firefox 正在發送 cookie,而它應該只/bar/根據規范發送到或更長的路徑!###規格是什么?我將引用RFC 6265 5.1.4 Paths and Path-Match 中的相關部分如果至少滿足以下條件之一,則請求路徑路徑匹配給定的 cookie 路徑:o cookie-path 和 request-path 是相同的。o cookie-path 是請求路徑的前綴,cookie-path 的最后一個字符是 %x2F ("/")。o cookie-path 是請求路徑的前綴,請求路徑的第一個不包含在 cookie-path 中的字符是 %x2F(“/”)字符。在這種情況下,請求路徑/bar和 cookie 路徑/bar/不匹配###Google Chrome 怎么樣?谷歌瀏覽器不會將 cookie 發送給/bar??我的問題誰是對的?鉻合金 ?還是火狐?###額外細節:我在 Linux 上的 Firefox 66.0.4 和 Chrome 版本 76.0.3809.132 Linux 上進行了測試這是我在課堂上使用的相關函數public static function isPathMatch(string $requestPath, string $cookiePath){    if ($requestPath === $cookiePath) return true;    if (strpos($requestPath, $cookiePath) !== 0) return false;    if (substr($cookiePath, strlen($cookiePath) - 1, 1) === "/") return true;    if (substr($requestPath, strlen($cookiePath), 1) === "/") return true;    return false;}這是我為 Firefox找到的第二個問題,但它仍然是我最喜歡的瀏覽器 :)感謝@fendall 關于 RFC 的評論,我跟蹤了與此問題相關的 RFC1997 年 2 月RFC 2109歷史。被淘汰2000 年 10 月RFC 2965歷史。被淘汰2011 年 4 月RFC 6265建議標準,如果獲得批準將被廢棄2017 年 8 月草案-ietf-httpbis-rfc6265bis-02互聯網草案該MDN的Set-Cookie文件使用這兩種規格RFC 6265和草案,IETF-httpbis-rfc6265bis-02和兩種規格幾乎是“路徑和路徑-匹配”部分中的相同。(我在問題中引用的部分)我向 Bugzilla 報告了一個錯誤https://bugzilla.mozilla.org/show_bug.cgi?id=1579552
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

是的,Chrome 是對的,正如ehsan akhgari在錯誤報告中所評論的那樣

是的,我們的路徑匹配算法與規范完全不同。與Chrome相比,它們似乎非常嚴格地遵循規范。

...他們更改了 Firefox 的源代碼并修復了它https://phabricator.services.mozilla.com/D45427


查看完整回答
反對 回復 2022-01-02
  • 1 回答
  • 0 關注
  • 343 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號