我几天来一直在搜索这个问题并做了很多研究,但我无法解决这个问题。
我试图控制我的网页,将它们重定向到http或https,无论我是否需要它。
我创建了一个attrubte来放在我需要在HTTPS中运行的每个页面
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://unpkg.com/region2d@1.0.0/plain/region2d.min.js"></script>
<div class="container">
<div class="target1"></div>
<div class="target2"></div>
</div>
然后我运行了一个HttpModule来检查每个页面。
[AttributeUsage(AttributeTargets.Class)]
public sealed class RequireSSL : Attribute { }
问题在于,当我重定向到相同的网址或任何其他网址时。浏览器拒绝从http切换到https,或者反过来导致重定向循环,浏览器将阻止这种情况发生。
我发现当我用www替换我的网址时,我的网站会运行得很好。或没有www。但我不能在我有test.dartsghent.be的子网站上使用它。
任何人都可以告诉我如何解决这个问题,请不要使用urlrewriter模块。
感谢任何帮助
注意:我没有使用MVC
正如您所看到的,页面会自动重定向。我使用RedirectPermanent(url)来https,但即使重定向被触发,它也不会移动到https,所以它一直在尝试。
答案 0 :(得分:1)
假设这是ASP.NET MVC ......
此功能已通过System.Web.Mvc.RequireHttpsAttribute
类存在于MVC v4中。
答案 1 :(得分:0)
您对www.blah...
变量url
进行了硬编码。
如果您想使用子域,则需要查询原始请求:
string url = requireSSL ? Uri.UriSchemeHttps : Uri.UriSchemeHttp +
request.Host +
request.AbsolutePath +
request.Query;
这是我的头脑。检查生成的字符串并进行相应调整。
答案 2 :(得分:0)
我做了更多研究,发现问题出在我的重定向功能中。 当您重定向到同一个域时,它不会更改协议。所以我做的是检查域名,如果www。是在它前面,然后用www重定向到域。在它面前没有一个。
包含一个子域这会更难,所以我必须先重定向到另一个页面。否则浏览器会以循环结束。
对我来说似乎有点激烈,但这是我让它发挥作用的唯一方式。