Javascript - 无法发布数据(使用 axios),而它在邮递员中工作。为啥?

Posted

技术标签:

【中文标题】Javascript - 无法发布数据(使用 axios),而它在邮递员中工作。为啥?【英文标题】:Javascript - Cannot post data (using axios), while it works in postman. Why?Javascript - 无法发布数据(使用 axios),而它在邮递员中工作。为什么? 【发布时间】:2019-06-08 19:58:16 【问题描述】:

编辑: 显然错误(在我的第三个示例中)是“?”在http://example.herokuapp.com/api/v1/tickets? 在我删除它之后,它可以工作:)

我正在尝试使用 axios 发出一个发布请求,当我在邮递员中执行此操作时,一切正常,但是当我在我的代码中执行此操作时,我总是得到 500 或 400 的回复。

在邮递员我的(这里的数据是样本数据) 我的网址:

http://example.herokuapp.com/api/v1/tickets?

在我的身体里面邮递员:

pin: 123ABC,
ride_id: 24,
token: XXAAXXAAXX

然后在我的代码中我尝试了一切。

第一次尝试:

return axios.post("http://example.herokuapp.com/api/v1/tickets?pin="123ABC"&ride_id=24&token=XXAAXXAAXX")

这里出现错误:请求失败,状态码为 400

第二次尝试:

return axios.post("http://example.herokuapp.com/api/v1/tickets?", 
 params: 
     pin: "123ABC",
     ride_id: 24,
     token: "XXAAXXAAXX"
 

第三次尝试:

return axios.post("http://example.herokuapp.com/api/v1/tickets?", 
  pin: "123ABC",
  ride_id: 24,
  token: "XXAAXXAAXX"
)

任何帮助将不胜感激!!!

【问题讨论】:

调用axios.post的客户端代码是否托管在同一个heroku服务器上? (顺便说一句,根据文档,第三版是正确的) How to post query parameters with Axios?的可能重复 @ChrisG 我认为第二次尝试在 URL 和 Object 之间使用 null 是根据以下答案的正确方法:How to post query parameters with Axios?。否则,数据将作为请求正文的一部分而不是查询参数发送。 据我所知,OP 正在尝试发送 POST 参数,而不是 GET 参数。第一次尝试很糟糕,但 POSTMAN 测试是正确的。 @zero298 我实际上也尝试在 url 和参数之间添加 null,也没有运气 【参考方案1】:

你的后端使用什么语言?

如果是php,请记住对于外部请求,您必须放置

header("Access-Control-Allow-Origin: *");

【讨论】:

如问题所述,OP使用heroku,即Node/JS。【参考方案2】:

第三种方式是在axios中使用post请求的正确方式。参数与获取请求相关联。

您的请求在 Postman 中有效但在网站上失败的原因可能是 CORS 错误。您可以通过查看网络选项卡来查看这是否是 CORS 错误,并且您会看到失败的请求是 OPTIONS 请求。它应该像

这样说
http://localhost:8080 is not allowed by Access-Control-Allow-Origin

要解决此问题,您需要向节点服务器添加一些代码行。

var cors = require('cors')
var app = express()

app.use(cors())

您可以在这里查看更多关于 cors 的信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors 和 https://www.npmjs.com/package/cors

【讨论】:

以上是关于Javascript - 无法发布数据(使用 axios),而它在邮递员中工作。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript之使用JavaScript模仿oop编程

小米ax3600已连接但无法访问互联网

EMC FC AX-4存储崩溃,raid5硬盘损坏的数据恢复过程

Javascript - 无法发布数据(使用 axios),而它在邮递员中工作。为啥?

如何在 python 中为子图运行智能循环

尝试首先使用 AX 查询对象加入