gpt4 book ai didi

asp.net - 使用路由或其他方法强制使用 http 或 https?

转载 作者:行者123 更新时间:2023-12-02 08:35:45 25 4
gpt4 key购买 nike

我有一个标准站点

拥有所有公共(public)页面的 www.example.com

但在用户登录后,所有页面都处于安全模式:https://www.example.com

我想强制相关页面只有httphttps

http 的角度来看,我不想要https://www.example.com/about/Google 身份工作将对重复内容的网站进行处罚。

从登录的角度来看我不想要

http://www.example.com/signin/

出于明显的安全原因而工作。

解决这个问题的最佳方法是什么?

访问错误的版本会导致永久 301 重定向

最佳答案

我把这个 Action 过滤器放在一起作为可以做什么的想法

public class RequireNonSSLAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0) return;
if (filterContext.ActionDescriptor.GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0) return;
if (!filterContext.IsChildAction) return;

// else

UriBuilder uriBuilder = new UriBuilder(Request.Url);

//change the scheme
uriBuilder.Scheme = "http";
uriBuilder.Port = 80;

filterContext.Result = this.RedirectPermanent(uriBuilder.Uri.AbsoluteUri);


base.OnActionExecuting(filterContext);
}
}

如果没有请求但使用了 SSL,这个想法只是重写 url。我目前无法对其进行测试。

关于asp.net - 使用路由或其他方法强制使用 http 或 https?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21794442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com