错误编号';访问控制允许来源';在操作筛选器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");
}
}
提前谢谢。
对与页面不同的域执行XMLHttpRequest
的第一件事是在上。出于安全原因,您会因为相同的原因而收到错误。
考虑使用此跨来源XMLHttpRequest
同时考虑使用CORS
跨源资源共享(CORS)是W3C规范,允许从浏览器进行跨域通信。通过构建在XMLHttpRequest对象之上,CORS允许开发人员使用与相同域请求相同的习惯用法
编辑:
根据OP的评论添加此内容。您重定向到如下控制器操作方法:
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{{"controller", "Home"}, {"action", "Index"}});