繁体   English   中英

错误没有'Access-Control-Allow-Origin'标头出现在请求的资源上,同时重定向动作过滤器onActionExecuting

[英]Error No 'Access-Control-Allow-Origin' header is present on the requested resource while redirecting on Action Filter onActionExecuting

我在重定向到外部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");
    }
}

提前致谢。

您首先要将XMLHttpRequest发送到与您的页面不同的域。 出于安全原因,您因为相同的来源而收到错误。

考虑使用此Cross-Origin XMLHttpRequest

另请考虑使用CORS

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

编辑:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM