我正在开发一个asp.net 5 MVC 6网站。我打开需要HTTPS,如下所示:
services.AddMvc(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
它工作得很好,我已经这样做了一段时间。今天我需要关闭它,所以我注释掉了选项过滤器,但它仍然需要HTTPS。
我没有在控制器或操作本身上使用[RequireHttps]属性。
我已进入属性并取消选中“启用SSL”并将http网址粘贴到“启动网址”框中。
我已关闭IIS Express并重新启动该网站。它似乎并不重要,它继续尝试重定向到HTTPS。
IIS Express或Kestral是否可以缓存我需要删除的内容? 任何人都有任何建议,还有什么可能迫使它加入HTTPS?
答案 0 :(得分:9)
RequireHttpsAttribute
实施将永久重定向响应(301)发送回浏览器:
// redirect to HTTPS version of page
filterContext.Result = new RedirectResult(newUrl, permanent: true);
这意味着当您最初启用了该属性并请求了http://localhost:62058/之类的网址时,服务器将回复:
301 (Moved permanently)
Location: https://localhost:62058/
如果您查看301响应代码的definition,您会看到默认情况下浏览器会将其缓存:
已为所请求的资源分配了一个新的永久URI和any 以后对此资源的引用应该使用其中一个返回的 的URI。具有链接编辑功能的客户端应该自动进行 将对Request-URI的引用重新链接到一个或多个新的 尽可能由服务器返回的引用。 此回复是 除非另有说明,否则可缓存。
新的永久URI应该由位置字段给出 响应。除非请求方法是HEAD,否则是实体 响应应该包含一个带有超链接的短超文本注释 新的URI。
删除RequireHttps
过滤器后,浏览器仍将使用缓存的响应:
因此,删除RequireHttps
过滤器后您需要做的就是重建并清除浏览器缓存!