出于这样或那样的原因,我有一个执行注销的站点,然后用户被重定向到独立的登录站点(登录托管在Azure中,主站点托管在其他地方)。在MVC中,注销操作使用以下(vb)代码:
Function LogOut() As ActionResult
Session.Abandon()
FormsAuthentication.SignOut()
Return Redirect("~/")
End Function
它做了它应该做的事情,但在上次更新(尝试使用html5boilerplate中的一些位-只是一些css和一些安全头)之后,仅在Chrome中,在用户被送回着陆点之前,会有一个简短的重定向代码:
<html><head><title></title><script language="javascript">window.location = 'http://<site here>';</script></head><body></body></html>
在所有其他浏览器(IE、FF、Safari)中,用户看不到任何异常,但Chrome用户可以看到原始的html代码。查看Chrome的日志(保存在操作过程中),我发现有问题的页面使用的是text/plain
而不是text/html
,对此原因我相当困惑。
事实证明,我无意中将X-Content-Type-Options
设置为nosniff
,而在Chrome中——如果没有设置MIME,那么它想通过查看内容来"嗅探"。通过明确禁止它,浏览器别无选择,只能使用text/plain。
TL;DR-确保未设置X-Content-Type-Options
。