此外,爲什麼白色空間靈敏度?如果JavaScript可以在HTML加載後添加cookies,那麼我猜想他們的做法有些根本不同,但我不知道爲什麼。爲什麼Cookie和會話需要放在任何HTML之前?
回答
HTTP響應由一個標題和一個(可選的取決於標題)正文組成。
Cookie設置爲HTTP標頭。
HTML文檔(任何其他實際內容)在主體中發送。
標題必須在正文之前發送。
- 運行的代碼輸出它們的代碼進行輸出前體
- 緩衝PHP程序的輸出,直到它完成運行
:這可以通過完成此外,爲什麼白色空間靈敏度?
空白在HTTP響應主體中並不特殊。它是任何其他內容輸出。
如果JavaScript可以添加餅乾HTML加載後,然後我猜有什麼根本不同的關於他們如何
他們不使用HTTP頭設置。
此答案不完整。可以使用HTTP/1.1的分塊編碼在主體之後發送頭文件。有趣的問題是爲什麼PHP不允許這樣做。我的猜測是,他們要麼不知道,要麼確保所有平臺上的相同行爲,即那些不支持HTTP/1.1或使用CGI的行爲,這也會強制頭部被首先發送。 (但後者對於PHP來說是不尋常的。) – Phillip
WWW服務器將部分數據發送到瀏覽器。第一部分是一些通常被稱爲HTTP Headers
的文本。它們定義了類型,大小,語言,內容的編碼,服務器也發送了一些關於它自己的信息。 Cookies也發送到這裏,因爲這是「非現場」信息的地方。
會話有點不同。他們是服務器端。因此,您需要在服務器啓動之前聲明會話以呈現內容並將其發送到客戶端瀏覽器。另一個原因是你的會話標識符是一個cookie!所以是的,會話不會沒有cookie。
Cookie是客戶端(瀏覽器端)的小文本文件。 JavaScript是瀏覽器內的客戶端(瀏覽器端)腳本。因此,它不會使用HTTP與您實際觀看的網頁進行聯繫。沒有必要使用HTTP頭和東西。如果一個程序在你的計算機上運行,只需在計算機上修改這些文件就好多了,不是嗎?
這就是爲什麼JavaScript不使用HTTP頭來修改cookie文件。它只是告訴你的瀏覽器它想修改這個和那個,而瀏覽器是這樣做的。
更多的信息在Manual
「Cookie是客戶端(瀏覽器端)很少的文本文件。」 - 否。瀏覽器可能會將* cookie的數據存儲在一個小文本文件中,但這是一個實現細節。 Cookie是HTTP服務器和客戶端之間交換的數據片段。 – Quentin
- 1. 在「&」之前需要放置什麼?
- 2. 爲什麼在需要之前選擇?
- 3. cURL - 需要cookie和會話嗎?
- 4. 爲什麼需要一個會話bean?
- 5. 任何想法爲什麼Internet Explorer不保存會話cookie?
- 6. 會話cookie和HTML形成
- 7. 爲什麼dot需要在子域之間創建一個cookie?
- 8. 什麼是無Cookie會話?
- 9. 爲什麼兩個會話cookie
- 10. 爲什麼Cookie會話保持死亡
- 11. Cookie破壞會話破壞,爲什麼?
- 12. 爲什麼會話ID cookie不安全
- 13. 當請求的js文件,爲什麼需要cookie信息(會話ID)
- 14. 在Haskell中,爲什麼我需要在我的do塊之前放置一個$?
- 15. 爲什麼我的Rails會話和cookie不會持久?
- 16. PHP:session_name和cookie會話名稱之間的區別是什麼
- 17. Cookie和會話之間的關係是什麼?
- 18. 成功的php會話需要什麼?
- 19. 爲什麼在寫stderr之前需要在stdout上使用fflush?
- 20. PHP會話內部使用Cookie嗎?什麼是會話cookie?
- 21. 爲什麼在重放之前調用publish()很重要()
- 22. 爲什麼我需要在jQuery調用之間放置1ms setTimeout()?
- 23. 爲什麼會話需要存儲在站點服務器上?
- 24. Swift爲什麼會這樣?需要AnyObject vs任何
- 25. 爲什麼JPopupMenu在渲染之前需要傳遞2次UIThread?
- 26. 爲什麼我需要在fireTableRowsInserted()之前調用getRowSorter()。modelStructureChanged()
- 27. 爲什麼在返回Py_None之前需要Py_INCREF(Py_None)?
- 28. 爲什麼我們需要在git pull之前先push git?
- 29. 爲什麼我們需要在getline(cin,string)之前使用cin.ignore()?
- 30. 爲什麼在調用AviFileExit()之前需要調用IAviFile指針?
您應該閱讀HTTP(用於傳輸HTML的協議)的介紹。 – Phillip
這是[HTTP](http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol)所要求的。 Cookie被設置在標題中,並且標題**必須**在主體內容之前。 JS沒有使用HTTP進行cookie。它已經在瀏覽器中運行,並且可以直接設置/操作cookie。服務器未在瀏覽器中運行。它只能通過響應標題中的Cookie指令來設置Cookie。 –
@MarcB你的*必須*只適用於HTTP/1.0。分塊傳輸編碼允許在文件正文後發送標題。 – Phillip