You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor(.cshtml)与.jsx认证流程异常:出现302状态码,登录按钮未发请求

解决Razor与JSX认证流程中302状态码(登录按钮无请求)的问题

第一步:排查JSX登录按钮的事件绑定逻辑

  • 确认按钮使用JSX规范的onClick(而非原生HTML的onclick)绑定事件,示例:
    // 错误写法
    <button onclick="handleLogin()">登录</button>
    // 正确写法
    <button onClick={handleLogin}>登录</button>
    
  • 检查handleLogin函数的完整性:确保内部有明确的请求发送逻辑,且在表单内点击时阻止默认提交行为,避免页面跳转覆盖异步请求:
    const handleLogin = async (e) => {
      e.preventDefault(); // 阻止表单默认提交
      const formData = new FormData(e.target.form);
      // 必须包含发送请求的代码
      const res = await fetch('/Account/Login', {
        method: 'POST',
        body: formData,
        credentials: 'include' // 跨Razor/JSX场景需携带Cookie维持会话
      });
    };
    

第二步:检查Razor与JSX的交互冲突

  • 若JSX嵌入在Razor页面的<form>标签内,确认Razor表单的默认提交行为未覆盖JSX事件:可给Razor表单添加onsubmit="return false;",或在JSX事件中强制阻止默认行为。
  • 排查Razor页面的全局JS监听:是否存在全局表单提交拦截逻辑,导致登录按钮的请求被阻断。

第三步:用开发者工具验证请求状态

  • 打开浏览器F12开发者工具,切换到Network标签并勾选Preserve log,点击登录按钮后观察:
    • 若无任何请求生成:说明事件绑定完全失效,回到第一步重新检查绑定逻辑。
    • 若请求被拦截:检查是否有内容安全策略(CSP)限制,或JSX中请求的URL路径与Razor后端路由不匹配。

第四步:修复302状态码的根源

当按钮正常发送请求后,302通常是服务器端认证拦截的响应,此时需:

  • 确保请求携带正确凭证:Cookie场景开启credentials: 'include',JWT场景在请求头添加Authorization: Bearer {token}。
  • 调整服务器端配置:将API接口的认证拦截响应从302跳转改为返回401状态码,更适配前端异步请求的处理逻辑。

内容的提问来源于stack exchange,提问作者CodedX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 00:42:27