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

使用jQuery Ajax发送POST请求遇404错误,POSTMAN请求正常

问题分析与解决方案

你遇到的核心问题是JSONP不支持POST请求,这直接导致你的请求被强制转为GET,从而触发404错误。

为什么会出现这个问题?

你在代码里设置了dataType: "jsonp",但JSONP的工作原理是通过动态创建<script>标签加载资源,而script标签只能发起GET请求——哪怕你写了type: "POST",jQuery也会忽略这个设置,自动把请求改成GET。这就是错误日志里显示GET https://moneywave.herokuapp.com/v1/merchant/的原因。

而POSTMAN用POST请求能得到400响应,说明这个接口确实是POST接口,但你的代码发的是GET,后端没有对应的GET路由,所以返回404。

怎么解决?

1. 移除JSONP配置,改用标准JSON请求

首先把dataType: "jsonp"改成dataType: "json",这样jQuery会发起真正的POST请求。修改后的代码如下:

function PostAction() {
 $.ajax({
 type: "POST",
 dataType: "json",
 url:"https://moneywave.herokuapp.com/v1/merchant/",
 headers: {
 'apiKey': '12893n3m3ki3',
 'secret':'jfjfjffjhfjfmk'
 },
 success: function(data, textStatus, xhr){
 console.log("请求成功返回数据:", data);
 },
 error: function(xhr, textStatus, errorThrown){
 console.log("请求错误:", textStatus, errorThrown);
 },
 complete: function(xhr, textStatus) {
 console.log("HTTP状态码:",xhr.status);
 }
 });
}

2. 处理跨域问题

改完后你可能会遇到跨域错误(CORS),这时候需要确认目标接口是否支持CORS:

  • 如果目标服务器已经配置了Access-Control-Allow-Origin等CORS响应头,那请求就能正常工作;
  • 如果没有配置,你需要:
    • 联系后端开发者开启CORS支持;
    • 或者用服务器端代理:自己写一个后端接口,前端调用这个接口,由它转发请求到目标接口(这样就不存在跨域问题了)。

3. 额外检查:认证信息的传递方式

另外,确认目标接口是否接受通过headers传递apiKey和secret,有些接口可能要求把这些信息放在请求体或者URL参数里,如果接口文档有明确说明,要对应调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:43:27