我使用mod_rewrite啓用了PHP5和Apache。如何告訴瀏覽器不要爲某些文件夾,文件或請求發送COOKIE?
由於we know在每個頁面加載瀏覽器發送cookie數據到請求的文件。這些數據可能對PHP文件有用,但對於圖像或css文件,它沒有任何價值,只是簡化了瀏覽器和服務器之間的通信。
有什麼辦法可以告訴瀏覽器或服務器停止這樣做某些文件類型或目錄?
我使用mod_rewrite啓用了PHP5和Apache。如何告訴瀏覽器不要爲某些文件夾,文件或請求發送COOKIE?
由於we know在每個頁面加載瀏覽器發送cookie數據到請求的文件。這些數據可能對PHP文件有用,但對於圖像或css文件,它沒有任何價值,只是簡化了瀏覽器和服務器之間的通信。
有什麼辦法可以告訴瀏覽器或服務器停止這樣做某些文件類型或目錄?
兩種方式:
我擡頭一看cookie specification。
當它向原始服務器發送請求時,如果用戶代理存儲了適用於該請求的Cookie,則會包含Cookie請求標頭。
它描述的唯一條件是域,路徑,端口和安全(https)。如果你無法重組應用程序以避免這種情況,那麼你將會得到無關的cookie,並且你可能無法做到這一點(不能更換互聯網上的所有瀏覽器,或者只是不發送cookie來開始)。我會考慮將重定向放在/指向子目錄,但這可能與您希望保存的開銷相同,並且具有語義影響。
你有基準嗎?它究竟有多大的交易?你發送的餅乾有多大?是否還有其他優化可以改善用戶體驗?
Cookie的語法,以供參考:
set-cookie = "Set-Cookie2:" cookies
cookies = 1#cookie
cookie = NAME "=" VALUE *(";" set-cookie-av)
NAME = attr
VALUE = value
set-cookie-av = "Comment" "=" value
| "CommentURL" "=" <"> http_URL <">
| "Discard"
| "Domain" "=" value
| "Max-Age" "=" value
| "Path" "=" value
| "Port" [ "=" <"> portlist <"> ]
| "Secure"
| "Version" "=" 1*DIGIT
portlist = 1#portnum
portnum = 1*DIGIT
在我的應用程序只有一個公共HTML文件夾中的PHP文件是在同一目錄下的index.php存在資產和媒體文件夾。 在這種情況下,定義cookie路徑不會產生任何影響,並且創建新的域或子域並不總是可行。 – Nazariy
對不起,路徑和域是唯一的方法(除了端口和安全性,通常沒有多大用處)。爲什麼不將index.php重定向到/home/index.php或/a/index.php或類似的東西?然後,Cookie只能進入該子路徑。 – dmazzoni