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编程
EMC FC AX-4存储崩溃,raid5硬盘损坏的数据恢复过程