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

MVC中AJAX调用生产环境返回302且无法获取数据求助

问题排查与解决方案

1. 处理302跳转问题

  • 302状态码基本是身份验证触发的重定向,生产环境大概率启用了身份验证机制,AJAX请求未携带认证信息导致被跳转到登录页面。
    • 若用表单验证:在AJAX请求中加入__RequestVerificationToken,可从页面的<input name="__RequestVerificationToken">获取值,放到请求头或表单参数里。
    • 若用Windows身份验证:检查生产环境站点的身份验证设置,要么允许目标Action匿名访问,要么给AJAX请求配置withCredentials: true(仅限同域或已配置CORS的跨域场景)。
    • 排查IIS的URL重写规则,避免错误重定向AJAX请求的Action路径。

2. 解决404脚本加载错误

  • 控制台报错的ajax.ts是TypeScript源文件,生产环境不应直接加载.ts文件,必须引用编译后的.js文件。检查页面脚本引用路径,替换为编译后的JavaScript文件路径。
  • 确认生产环境静态资源部署完整性,该脚本文件是否存在于对应目录,若用CDN则检查CDN配置是否正确。

3. 适配生产环境大数据量

  • MVC默认JSON序列化长度有限,大数据量会触发异常。在Web.config中配置最大序列化长度:
    <configuration>
      <system.web.extensions>
        <scripting>
          <webServices>
            <jsonSerialization maxJsonLength="2147483647" />
          </webServices>
        </scripting>
      </system.web.extensions>
    </configuration>
    
  • 同时延长请求超时时间,避免大数据处理超时:
    <system.web>
      <httpRuntime executionTimeout="300" /> <!-- 单位:秒 -->
    </system.web>
    

4. 修复隐藏域内容异常

  • 隐藏域被写入脚本,本质是302跳转后返回了登录页HTML而非目标JSON。先解决302问题,再验证AJAX返回内容。
  • 在AJAX的error回调中打印响应内容,确认返回的是否为登录页:
    $.ajax({
      url: '/Controller/TargetAction',
      type: 'GET',
      success: function(data) {
        $('#targetHiddenField').val(JSON.stringify(data));
      },
      error: function(xhr) {
        console.log(xhr.responseText); // 打印响应内容,定位是否为登录页HTML
      }
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:20:41