错误编号';访问控制允许来源';在操作筛选器onActionExecuting上重定向时,请求的资源上存在标

本文关键字:重定向 请求 资源 存在 onActionExecuting 操作 访问控制 编号 筛选 错误 | 更新日期: 2023-09-27 18:22:39

我在重定向到外部URL时遇到问题要求每当会话过期时,我都希望重定向到外部URL。

我有一个单独的类,在其中我覆盖onActionExecuting Action 的定义

这是我的代码:

public class SessionExpireAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
       // var redirectUrl = "http://www.google.com";
        var isAjaxRequest = filterContext.HttpContext.Request.IsAjaxRequest();
        if (isAjaxRequest)
        {
            filterContext.Result = new RedirectResult("http://www.google.com");
            return;
        }
        base.OnActionExecuting(filterContext);
    }
}

我已经尝试了几乎所有我能在Stack Over Flow上找到的解决方案,但我的问题仍然没有解决。

是否有任何与控制器过滤器的管道执行有关的问题,请指导我。

控制台上的注释显示此错误

XMLHttpRequest无法加载http://www.google.com/.不请求的上存在"Access Control Allow Origin"标头资源原点'http://localhost:49815因此不允许通道

已编辑

 public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var redirectUrl = "http://www.google.com";
        var isAjaxRequest = filterContext.HttpContext.Request.IsAjaxRequest();
        if (isAjaxRequest)
        {
            filterContext.Result = new RedirectToRouteResult(
            new RouteValueDictionary { { "controller", "TestController" }, { "action", "Redirect" } });
            if (filterContext.Result!=null)
            return;
        }
        else
        {
            base.OnActionExecuting(filterContext);
        }
    }

这是我的控制器&行动

 public class TestController : Controller
{
    public ActionResult Redirect()
    {
        return Redirect("http://www.google.com");
    }
}

提前谢谢。

错误编号';访问控制允许来源';在操作筛选器onActionExecuting上重定向时,请求的资源上存在标

对与页面不同的域执行XMLHttpRequest的第一件事是在上。出于安全原因,您会因为相同的原因而收到错误。

考虑使用此跨来源XMLHttpRequest

同时考虑使用CORS

跨源资源共享(CORS)是W3C规范,允许从浏览器进行跨域通信。通过构建在XMLHttpRequest对象之上,CORS允许开发人员使用与相同域请求相同的习惯用法

编辑:

根据OP的评论添加此内容。您重定向到如下控制器操作方法:

filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary
                    {{"controller", "Home"}, {"action", "Index"}});