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

Chrome 66下向NTLM认证服务器发起API请求遇问题求助

Chrome 66下NTLM认证API请求的问题解决

嘿,我之前也碰到过Chrome 66升级后和NTLM认证相关的Fetch请求坑,给你捋捋可能的原因和具体的请求头调整方案,应该能解决你的问题:

可能的原因分析

  • 安全机制收紧:Chrome 66对跨域凭证(credentials)的处理逻辑做了更新,NTLM作为依赖连接的认证机制,隐式的请求配置很容易触发浏览器的安全拦截,导致异常跳转至API页面认证。
  • 认证上下文混乱:新版本Chrome对NTLM认证的请求上下文要求更严格,如果在页面未完全初始化时发起请求,会导致认证完成后页面状态异常(空白、键盘失效)。
  • 缓存干扰:浏览器缓存的旧认证状态或请求结果,会让第一次请求的认证流程出错,刷新后缓存失效才恢复正常。

针对性的请求头调整方案

你可以在Fetch请求中添加几个关键的请求头和配置,来适配Chrome 66的新规则:

<html>
<head>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
  fetch('https://fakeapiurl.com/api', {
    credentials: 'include',
    mode: 'cors',
    headers: {
      'Cache-Control': 'no-cache',
      'Pragma': 'no-cache',
      'Connection': 'keep-alive',
      'Accept': 'application/json'
    }
  })
  .then(function(response) {
    return response.json();
  })
  .then(function(myJson) {
    console.log(myJson);
  })
  .catch(function(err) {
    console.error('请求出错:', err);
  });
});
</script>
</head>
<body>
</body>
</html>

配置说明

  • mode: 'cors':强制浏览器按照CORS规范处理请求,明确告知浏览器要传递凭证,避免Chrome 66的隐式安全拦截触发异常跳转。
  • Cache-Control: no-cache + Pragma: no-cache:彻底禁用请求缓存,避免旧的认证状态干扰第一次请求的流程,解决刷新前的空白页面问题。
  • Connection: keep-alive:维持与服务器的连接,NTLM是基于连接的认证机制,保持连接可以减少重复的认证协商,避免跳转。
  • Accept: application/json:明确告诉服务器期望JSON响应,防止服务器返回认证跳转的HTML内容导致页面解析异常。
  • 放在DOMContentLoaded事件中:确保页面完全初始化后再发起请求,避免认证流程和页面初始化冲突导致的状态异常(键盘失效、空白页)。

额外验证点

如果调整后还是有问题,可以临时禁用Chrome的内置广告拦截(设置→隐私和安全→网站设置→广告)测试,虽然概率不高,但Chrome 66的广告拦截规则可能误判NTLM认证请求为恶意请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:55:17