You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用jQuery .ajax发起GET请求遇net::ERR_ABORTED及SSL证书信任问题求助

解决你的jQuery AJAX请求错误:NET::ERR_ABORTED和SSL证书信任警告

看来你遇到了两个关联的问题——SSL证书信任警告和请求中止错误,我来一步步帮你排查解决:

一、先处理SSL证书信任警告(这很可能是请求中止的根源)

浏览器提示“M70版本后将不信任该证书”,说明你的目标服务器使用的SSL证书不符合现代浏览器的信任标准,具体原因和解决办法如下:

  • 检查证书有效性与颁发机构
    • 如果是生产环境:确保证书由公共可信的CA(比如Let's Encrypt、DigiCert等)颁发,且未过期、域名完全匹配。自签名证书或私有CA颁发的证书在Chrome M70+会被默认拒绝,必须替换为公共CA证书。
    • 如果是测试环境:可以手动在浏览器中添加证书信任(Chrome中访问目标URL,点击地址栏的锁图标 → 证书 → 详细信息 → 复制到文件,然后在系统证书管理器中导入并设置为信任),但注意这只适合测试场景,绝对不能用于生产环境。
  • 验证证书链完整性
    有时候证书本身没问题,但缺失中间证书,导致浏览器无法完成信任链验证。你可以通过浏览器的证书详情查看:点击地址栏锁图标 → 查看证书 → 证书路径,检查是否有“无法验证”的提示。如果有,需要在服务器上配置完整的证书链(将中间证书和主证书合并后部署)。

二、解决NET::ERR_ABORTED请求中止错误

这个错误通常是SSL问题导致的,但也可能和你的AJAX配置有关,结合你的代码来看,有几个关键问题需要修正:

1. JSONP不支持自定义请求头,你的beforeSend配置无效!

JSONP的原理是动态创建<script>标签加载资源,根本不使用XMLHttpRequest对象,所以beforeSend里设置X-SOMETHING-Key头的操作完全无效。如果目标API必须要这个自定义头,你不能用JSONP,必须改用CORS跨域方案

2. 调整AJAX配置(改用CORS)

如果目标服务器支持CORS,修改代码如下(注意dataType改为json,并使用headers配置自定义头):

<script>
$(document).ready(function(){
  $.ajax({
    url:'你的实际API地址',
    type: 'GET',
    dataType: 'json', // 替换jsonp为json,依赖服务器CORS配置
    processData: true,
    crossDomain: true,
    headers: {
      'X-SOMETHING-Key': '你的密钥'
    },
    success: function(data){
      console.log(data);
    },
    error: function(xhr, status, error){
      // 添加错误日志,方便排查
      console.error('请求失败:', status, error);
      console.error('响应状态:', xhr.status);
      console.error('响应内容:', xhr.responseText);
    }
  });
});
</script>

3. 确认服务器CORS配置

如果改用CORS,服务器必须配置以下响应头:

  • Access-Control-Allow-Origin: 设置为你的前端域名(或*,但生产环境不建议用*,存在安全风险)
  • Access-Control-Allow-Headers: 必须包含X-SOMETHING-Key,否则浏览器会阻止带自定义头的请求

4. 用Network面板排查细节

打开浏览器开发者工具的Network面板,查看这个GET请求的详细信息:

  • 检查请求是否真的发送出去,还是在浏览器层面被拦截
  • 查看响应状态码、响应头,是否有CORS相关的错误提示
  • 确认请求头中是否正确携带了X-SOMETHING-Key

总结解决步骤

  1. 先修复SSL证书信任问题,确保浏览器能正常信任目标服务器的证书
  2. 确认目标API是否支持CORS,若需要自定义头则放弃JSONP,改用CORS方案
  3. 修正AJAX配置中的无效部分,添加错误回调方便排查
  4. 用Network面板验证请求的发送和响应细节

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

火山引擎 最新活动