尝试从部分视图重定向用户时出现CORS错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试从部分视图重定向用户时出现CORS错误相关的知识,希望对你有一定的参考价值。
我正在使用ASP.NET MVC5编写的应用程序,该应用程序要求用户登录。身份验证适用于中央身份验证服务(CAS)。在主页上,我有几个部分观点:
当我想更新用户的数据时,我调用控制器的动作。
它运作良好,直到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 时出现“快照尚未呈现的视图..”错误