![](/img/trans.png)
[英]No 'Access-Control-Allow-Origin' header is present on the requested resource error while accessing the API using http
[英]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)是一种允许来自浏览器的跨域通信的W3C规范。 通过构建在XMLHttpRequest对象之上,CORS允许开发人员使用与同域请求相同的习惯用法
编辑:
根据OP的评论添加此内容。 您重定向到控制器操作方法,如下所示:
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{{"controller", "Home"}, {"action", "Index"}});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.