尝试从部分视图重定向用户时出现CORS错误

问题描述 投票:0回答:1

我正在使用ASP.NET MVC5编写的应用程序,该应用程序要求用户登录。身份验证适用于中央身份验证服务(CAS)。在主页上,我有几个部分观点:

Home page with partial views

当我想更新用户的数据时,我调用控制器的动作。

它运作良好,直到CAS会话到期。如果我尝试刷新部分视图,我会收到错误:

“选项https://example.com/CAS/Authentication 403(Forbidden)”

“无法加载https://example.com/CAS/Authentication:预检的响应具有无效的HTTP状态代码403”

我认为它来自使用Ajax刷新局部视图,它返回登录页面,它不在同一个域上。我怎样才能克服这个问题?

在我的视图中,我使用Ajax.BeginForm()将数据发送到Controller,我的控制器返回部分视图,这样我就不需要完全刷新页面了。

ajax asp.net-mvc cors partial-views
1个回答
0
投票

为了克服Cross Origin Request错误,我需要处理Ajax响应。我没有让局部视图中返回登录页面,而是在OnComplete事件上调用Javascript函数,检查响应的状态代码。

在我的部分观点中:

AjaxOptions ajaxOptions = new AjaxOptions
{
    HttpMethod = "POST",
    OnComplete = "redirectToLoginPage"
};

using (Ajax.BeginForm("ActionName", "ControllerName", null, ajaxOptions))
{
    <button type="submit">Submit</button>
}

单击提交时,它将从控制器“ControllerName”执行操作“ActionName”。然后,它将触发Javascript函数“redirectToLoginPage”,即:

function redirectToLoginPage(xhr) {
    if (xhr.status == 200) {
        //Whatever
    }
    else
    {
        window.location.replace("https://login.example/");
    }
}

这样就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.