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

使用POST发送AJAX请求仍遭遇414 URI过长错误,求助解决

解决POST请求出现414「Submitted URI too large」错误的方案

嘿,这个问题我太熟了!你遇到的414错误,本质是虽然用了POST请求,但你把所有参数都塞到URL的查询字符串里了,这完全没发挥POST的核心优势——通过请求体(Body)传递大量数据,反而触发了服务器对URI长度的限制(比如Apache默认URI长度限制在8192字节左右)。

下面给你几个靠谱的解决办法,按优先级排序:

1. 把参数从URL移到POST请求体里(最推荐)

这是根治问题的办法,毕竟POST设计出来就是用来传递大量数据的。这里给你举个原生AJAX的示例,根据后端接受数据的类型调整即可:

情况1:后端接受表单格式数据(application/x-www-form-urlencoded)

const xhr = new XMLHttpRequest();
// 注意:URL不要带任何查询参数了
xhr.open('POST', 'http://localhost/Repositories/som/administrador/noticias-editar.php', true);
// 设置请求头,告诉服务器数据格式
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

// 把所有参数整理成键值对,放到请求体里
const formData = new URLSearchParams({
  countryBanner: 1,
  datepicker: '1969-12-31 04:00 PM',
  highlight: 1,
  typeBanner: 'Small',
  category: 'Tips',
  editor: 'FAMO:SWISS',
  og_img: 57,
  title_US_EN: 'How to choose the right chair?',
  // 其他剩余参数...
});

xhr.onload = function() {
  // 这里处理服务器响应
  if (xhr.status >= 200 && xhr.status < 300) {
    console.log('请求成功:', xhr.responseText);
  } else {
    console.error('请求失败:', xhr.statusText);
  }
};

// 发送请求体数据
xhr.send(formData);

情况2:后端接受JSON格式数据(application/json)

如果后端支持JSON,可以这么写:

const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost/Repositories/som/administrador/noticias-editar.php', true);
xhr.setRequestHeader('Content-Type', 'application/json');

// 把参数转成JSON字符串
const jsonData = JSON.stringify({
  countryBanner: 1,
  datepicker: '1969-12-31 04:00 PM',
  highlight: 1,
  typeBanner: 'Small',
  category: 'Tips',
  editor: 'FAMO:SWISS',
  og_img: 57,
  title_US_EN: 'How to choose the right chair?',
  // 其他剩余参数...
});

xhr.onload = function() {
  // 处理响应逻辑同上
};

xhr.send(jsonData);

2. 临时方案:调整服务器的URI长度限制(不推荐优先使用)

如果你因为某些原因必须在URL里传参,可以修改服务器的配置来放宽URI长度限制,但这只是治标不治本,而且可能遇到客户端或代理的URI长度限制:

  • Apache服务器:在httpd.conf或.htaccess文件中添加/修改以下配置:

    LimitRequestLine 16384  # 调大URI总长度限制,单位字节
    LimitRequestFieldSize 8192  # 调大单个请求头字段的长度限制
    

    修改后记得重启Apache服务。

  • Nginx服务器:在nginx.conf的http或server块中添加/修改:

    client_header_buffer_size 16k;
    large_client_header_buffers 4 16k;
    

    修改后重启Nginx服务。

3. 检查并精简参数

看看你传递的参数里有没有不必要的内容,或者特别长的文本字段(比如文章内容),这类字段绝对不应该放在URL里,必须放到POST请求体中。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:22:01