.NET MVC 2 RequireHttps - 如何将 www.mysite.com 重定向到 mysite.com

发布于 2024-09-29 15:49:41 字数 481 浏览 3 评论 0原文

在 .NET MVC 2 中,您可以应用 属性来使方法受到 SSL 的保护。

<RequireHttps()>
Function Index() As ActionResult
    Return View()
End Function

假设您的 SSL 证书是为 mysite.com 颁发的。如果用户通过输入 http://www.mysite.com 访问您的网站, 会将其重定向到 https:// www.mysite.com,这将使浏览器显示无效证书警告。

砍掉 www 的最佳方法是什么?使用 时的前缀?

In .NET MVC 2 you can apply the <RequireHttps()> attribute to make a method be secured by SSL.

<RequireHttps()>
Function Index() As ActionResult
    Return View()
End Function

Let's say that your SSL certificate is issued for mysite.com. If the user visits your site by entering http://www.mysite.com, <RequireHttps()> will redirect them to https://www.mysite.com, which would make the browser display an invalid certificate warning.

What is the best way to chop off the www. prefix when using <RequireHttps()> ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹿港巷口少年归 2024-10-06 15:49:41

解决方案是始终(如用户首次访问 www 版本时)将用户重定向到站点的非 www 版本。所以你的 require Https 属性将会起作用。

您可以在 IIS 中执行此操作,请参阅此处:http://forums.iis.net/t/1154053 .aspx

The solution is to always (as in when the user first goes to the www version) redirect the user to non-www version of your site. So your requires Https attribute will work.

You can do this in IIS, see here: http://forums.iis.net/t/1154053.aspx

英雄似剑 2024-10-06 15:49:41

我使用的是 IIS 7,可以访问 URL 重写模块 http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

我通过将其放入 MVC 2 应用程序的 web.config 文件中解决了这个问题:

<configuration>
...
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="CanonicalHostNameRuleMain" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAny">
            <add input="{HTTP_HOST}" pattern="^mysite\.com$" negate="true" />
            <add input="{HTTPS}" pattern="^off$" />
          </conditions>
          <action type="Redirect" url="https://mysite.com/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

http://mysite.com -> https://mysite.com
http://www.mysite.com -> https://mysite.com
https://www.mysite.com -> https://mysite.com

这很简单并且有效,但是拥有某种优雅的仅 MVC 解决方案仍然会很好。

I'm on IIS 7 and have access to the URL Rewrite module http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/.

I solved this by putting this in the web.config file of the MVC 2 application:

<configuration>
...
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="CanonicalHostNameRuleMain" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAny">
            <add input="{HTTP_HOST}" pattern="^mysite\.com$" negate="true" />
            <add input="{HTTPS}" pattern="^off$" />
          </conditions>
          <action type="Redirect" url="https://mysite.com/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

http://mysite.com -> https://mysite.com
http://www.mysite.com -> https://mysite.com
https://www.mysite.com -> https://mysite.com

This is simple and it works, but it would still be nice to have some sort of elegant MVC only solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文