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