我们收到来自少数用户的报告,他们最终会在我们的网络应用中出现非常奇怪的路径:
https://www.example.com/(F(1xe9eXIxPzMALrZu6xd_6LBxDDlJI3lH2lkSvREZZKCfPBH20SF5EcNql6uXvyBVLgiNZshp9vXxaEzuLa5zm8c4ruux6gqu3B90eXGNmKDypu-wKR4OW_GwQctfjCdoxFYcDlLwglfE6rICL3JGkxtq4jgxggiQgJopKZGzLJ_PF2lHY7NqXya8eDshkP9o8QFDad47U54TMsxEwKCki2xPV9d9VxxjmDhNg7aQb38X_OTxHtf9I7AxiccanJf4m0bo0ceEJ70Mv20XYaMSlA2))/some/path
(注意:我已经改变了随机字符,以防它出现某种安全漏洞,所以不要费心去解码它 - 虽然如果这样做可能会有所帮助,请告诉我我在寻找什么所以我可以在真实的URL上做到这一点。
这会导致IIS中有400,但IIS不会记录它,所以我不知道引用者等。
从用户描述的内容来看,它是在这一步骤中引起的:
return Redirect("/some/path");
(在ASP.NET MVC 2控制器操作中)。
在IIS 7.5下的IIS 7.5上运行的站点。
有什么想法吗?我从来没有见过这样的事情:s
更新
我还安装了ISAPI重写版,其中包含以下.htaccess
:
RewriteEngine on
AllowOverride All
# Ensure that all traffic on the live domain is enforced as HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? https://%1%2 [R,L]
答案 0 :(得分:7)
从iPad或Surface平板电脑浏览我们的网站时,我们遇到了完全相同的问题。表单身份验证将以某种方式切换到“UseUri”模式。
根据http://msdn.microsoft.com/en-us/library/1d3t3c61(v=vs.90).aspx,在表单身份验证中存储Auth票证的默认模式是“UseDeviceProfile”,它显然检查设备是否支持cookie。
然后它说“对于支持cookie的设备,不会尝试进行探测以确定是否启用了cookie支持。”也许有人可以帮我理解这句话:)
无论如何,我们通过强制表单身份验证在web.config文件中使用cookie来解决问题:
<authentication mode="Forms">
<forms cookieless="UseCookies" loginUrl="~/Login" timeout="2880" />
</authentication>
答案 1 :(得分:2)
看看Understand How the ASP.NET Cookieless Feature Works:
在V2.0中,匿名身份验证和表单身份验证也使用此功能。该网址现在可能如下所示:http://MySite.com/MyWebApplication/(A(XXXX)S(XXXX)F(XXXX))/home.aspx
并进一步向下:
F(XXXX):这是表单身份验证票证。
可能有些客户阻止了Cookie。
修改强> 也就是说,您发布的网址似乎过长。也许无论出于何种原因,MVC内部或URL重写都会与它进行严重的交互。
问题MVC2 Cookieless Session Issue using POST可能有些相关。
<强> EDIT2:强> 此线程似乎也与您的问题有关:http://forums.asp.net/t/1612673.aspx。 作者提到
部分用户报告了http 400错误
因为显然
某些用户正在获取比正常情况更长的表单身份验证令牌,因为这些令牌在URL中传递,使得URL长度超过IIS将接受
可能是一个长镜头,但值得一试。