2016-01-06 96 views
1

框架:Laravel 5.1Internet Explorer不看laravel 5.1餅乾

問題的瀏覽器:IE(增量邊)

問題的所有版本:當提交表單當用戶設置cookie提交表單後發回。

return Response::make($view)->withCookie(cookie('parameters', json_encode($request->except(['_token'])))) 

這適用於所有的瀏覽器,當然除了Internet Explorer的(爲什麼這個瀏覽器仍然存在?)

在Internet Explorer中的我得到一個空數組時,我傾倒的cookie。我嘗試了很多。我是不使用iframes,,但我確實嘗試使用P3P標題沒有成功,我已經將IE設置爲可能的最低安全級別,也沒有成功。我沒有在cookiename中使用suddomains或下劃線。我在多個域名上嘗試了它,但沒有成功,我在apache,nginx和我的本地環境中嘗試了它。 (宅基地)它也不起作用。

它看起來像cookie沒有設置(而在所有其他瀏覽器中,它正在設置)。不幸的是IE瀏覽器沒有一個選項或可能的插件來輕鬆檢查存儲的cookie(就像所有其他瀏覽器一樣)。但我幾乎肯定cookie不會被存儲。這很奇怪,因爲laravel的會話cookie被存儲。

我想我已經在這個上花了半天時間,但找不到任何解決方案。如果我將花費所有的時間與IE瀏覽器中的奇怪錯誤一起花費,我將成爲一個非常有錢的人。現在將停止抨擊IE,但男人,多麼可怕的瀏覽器。

編輯:其他的事情我想:時區檢查,檢查日期,服務器時間等,所有沒有工作

回答

2

也許你應該嘗試重命名會話Cookie的字母數字字符串。這是在IE中導致問題的laravel_session。我記得上個月,當我使用會話cookie(domain.com)部署我的應用程序時,由於會話名稱中的.,每個瀏覽器都有類似的令牌不匹配錯誤。

我試圖谷歌,並與此想出了:

安全補丁MS01-055防止服務器與不正確的名稱語法 設置Cookie的名字。使用cookie的域名必須在域名中使用 字母數字字符(「 - 」或「。」)。如果服務器 名稱包含其他字符(如下劃線字符(「_」)),則Internet Explorer將阻止來自服務器的Cookie。

因爲ASP會話狀態和會話變量依賴於cookie到 函數,所以如果在客戶端上不能設置 cookie,ASP不能維持請求之間的會話狀態。

此問題也可能由主機 標題中的錯誤名稱語法引起。

來源:https://support.microsoft.com/en-us/kb/316112

Q5:當主機名/域名含有 下劃線IE不會設置一個cookie?

答:正確。從技術上講,下劃線(如_)不是DNS 字符,而Windows將允許您在爲機器命名時使用下劃線,但會警告您這樣做可能會導致問題。 一個這樣的問題是,WinINET會阻止嘗試在 這樣的域上設置Cookie。見http://support.microsoft.com/kb/316112/en-us

http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx

+0

感謝您的回答和鏈接。不幸的是,我已經使用一個字母數字字符串作爲一個cookie名稱。我嘗試了不同的名字。 Cookie名稱如'test'(作爲會話cookie)在IE中仍然不起作用。 – mauricehofman