2013-11-21 47 views
0

我的MVC網站使用antiforgeryToken代碼,它在Chrome,Firefox中效果很好。然而,在IE10中,我注意到它給了我錯誤: 所需的防僞cookie「__RequestVerificationToken」不存在域名轉發/屏蔽與ASP MVC防僞令牌錯誤

絕對是一個cookie相關的問題,因爲當我允許所有cookie時,它工作正常。 (即最低的隱私設置) 但是,我也注意到,當我去GoDaddy並取消域轉發屏蔽,(但保留域轉發),它也可以正常工作。

有沒有辦法讓這與掩蔽工作? (Masking是一個允許轉發域名,同時隱藏非域名的選項,我這樣做是因爲我使用的是Azure網站,並希望我的用戶看到我的實際域名,而不是xxx.azurewebsites.net)

感謝您的幫助!

回答

0

域轉發掩碼通過託管您的真實URL在一個框架內工作。在這種情況下,您的真實網站內容來自與主網頁域不同的域。因此,您的網站嘗試設置的任何Cookie都將被解釋爲「第三方Cookie」,並且將被任何設置爲阻止這些cookie的瀏覽器阻止(顯然,包括默認設置的IE10)。

坦率地說,我認爲你在這裏打敗了一場失敗的戰鬥。這些類型的Cookie在您的使用情況中是良性的,但它們看起來完全類似於廣告客戶用來跟蹤網站中的人的類型,因此隨着時間的推移,我希望瀏覽器更加敵視他們。

我想你在這種情況下的選擇是不需要cookie(例如,不要使用ASP.NET MVC提供的反CSRF功能),或者將你的網站移動到允許你直接提供內容的主機上在真實的網址(這樣你就不必使用godaddy遮罩技術)。後者可能是最好的長期解決方案。

+0

感謝您的幫助。但必須有其他使用asp.net和azure創建的具有真實域名的網站。 (即不是mysite.azurewebsites.net)。 – user3015582

+0

是的,azure支持直接分配真實的域名(我使用天藍色爲www.ewal.net和trendweight.com),而不是在「免費」層。你必須至少在「共享」層上。域名設置的設置位於配置選項卡上,並且有一步一步的說明,您可以在GoDaddy上執行該操作。 –