使用ASP MVC防伪令牌错误进行域转发/屏蔽

时间:2013-11-21 01:09:16

标签: asp.net-mvc azure masking forwarding

我的MVC网站使用了antiforgeryToken代码,该代码适用于chrome,firefox。但是,在IE10中,我注意到它给了我错误: 必需的防伪cookie“__RequestVerificationToken”不存在

绝对是一个与cookie相关的问题,因为当我允许所有cookie时,它运行正常。 (即最低隐私设置) 但是,我也注意到,当我去GoDaddy并取消域名转发屏蔽时,(但保留域名转发)它也可以正常工作。

有没有办法让这个掩盖工作? (屏蔽是一种允许在隐藏非域名时转发域名的选项。我这样做是因为我使用的是Azure网站,而是希望我的用户看到我的实际域名,而不是xxx.azurewebsites.net)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

域转发屏蔽通过在帧内托管您的真实URL来工作。在这种情况下,您的真实网站内容来自与主页面域不同的域。因此,您的网站尝试设置的任何Cookie都将被解释为“第三方Cookie”,并且将被阻止这些类型的任何浏览器阻止(包括显然,IE10及其默认设置)。

坦率地说,我认为你在这里正在打一场败仗。这些类型的cookie在您的使用案例中是良性的,但它们看起来与广告商用于跟踪网站上的人们的cookie类似,因此随着时间的推移,我希望浏览器对它们更加充满敌意。

我认为您在这种情况下的选择是不需要cookie(例如,不要使用ASP.NET MVC提供的反CSRF功能),或者将您的网站移动到允许您直接提供内容的主机上真正的URL(这样你就不必使用godaddy masking技术)。后者可能是最好的长期解决方案。