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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试从部分视图重定向用户时出现CORS错误相关的知识,希望对你有一定的参考价值。

我正在使用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,我的控制器返回部分视图,这样我就不需要完全刷新页面了。

答案

为了克服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/");
    }
}

这样就可以了。

以上是关于尝试从部分视图重定向用户时出现CORS错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 next-connect 在 Next.js 中从 http://localhost:3000 重定向到 https://api.twitter.com 时出现 CORS 错误?

Swift:尝试从我的应用程序中打开 Safari 浏览器中的 URL 时出现“快照尚未呈现的视图..”错误

从 servlet 重定向到 html 时出现 404 错误

注销重定向时出现 Keycloak CORS 问题

尝试重定向我的python脚本的输出时出现语法错误[关闭]

从自己的域中获取 api 时出现 CORS 错误