当前位置: 首页 > 知识库问答 >
问题:

如何使用Vue JS axios在POST api中传递头体

冯皓
2023-03-14

我正在尝试调用aws Cognito(Tokenendpoint)的post API。它在我的邮递员客户端中完美地工作。但是我在我的VueJS代码中面临这个问题。

下面是我的代码片段。

测验vue

<script>
HTTP.post(`token`, {
    'grant_type': 'authorization_code',
    'client_id': 'XXXXXXXXXXXXXXXXXXXXXXXXX',
    'redirect_uri': 'http://localhost:8080/callback',
    'code': this.$route.query.code
  })
  .then(response => {
    console.log('Response: ' + response)
  })
  .catch(e => {
    console.log('Error: ' + e)
  })
</script>

我成功地从登录endpoint获取“代码”值在上面的代码中,HTTP是从下面的其他javascript导入的对象。

http通用。js

import axios from 'axios'

export const HTTP = axios.create({
  baseURL: 'https://maddox.auth.eu-west-1.amazoncognito.com/oauth2/',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})

我不确定,但问题是在我的邮递员中,我在正文标题中使用了“应用程序/x-ows-form-urlencoded”选项。在这里,我无法在正文中设置此值。

我认为我的标题和正文中的“应用程序/x-ows-form-urlencoded”选项没有正确设置。

我试过使用{emulateJSON:true}选项。但没用!

我得到了HTTP代码:400

{"data":{"error":"invalid_request"},"status": 400,"statusText":"Bad Request","Headers":{"pragma":"no-cache","content-type":"Application/json; charset=UTF-8","cache-control":"no-cache, no-store, max-age=0, slet-revalate","expier":"0"},"config":{"transformRequest":{},"transformResponse":{},"timeout": 0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLlong":-1,"Headers":{"Accept":"Application/json","Content-Type":"Application/x-ow-form-urlencoded"},"method":"post","baseURL":"https://maddox.auth.eu-west-1.amazoncognito.com",\":\"e19170dc-3d8f-420e-99b6-c05f7abad313\"}"},"请求":{}}

共有1个答案

南宫俊逸
2023-03-14

令牌endpoint只接受application/x-www-form-urlencoded,您正在发送JSON(因为axios只将JavaScript对象序列化为JSON)

如何使用axios发送应用程序/x-web-form-urlencoded:https://github.com/axios/axios#using-applicationx-www-form-urlencoded-format

下面是qs库的示例

<script>
HTTP.post(`token`, qs.stringify({
    'grant_type': 'authorization_code',
    'client_id': 'XXXXXXXXXXXXXXXXXXXXXXXXX',
    'redirect_uri': 'http://localhost:8080/callback',
    'code': this.$route.query.code
  }))
  .then(response => {
    console.log('Response: ' + response)
  })
  .catch(e => {
    console.log('Error: ' + e)
  })
</script>
 类似资料:
  • #!/usr/bin/env python import pika,sys,os def main(): connection = pika。BlockingConnection(pika。connection parameters(host = ' localhost '))channel = connection . channel() if name=='main':try:main()除了

  • 我有以下代码,用于创建和客户端并发送请求并等待响应。在这里你可以看到,我也用设置了一些标头值 现在,我需要我的要求是,我不需要消费者端的任何响应,只想将请求传递给带有一些标头值的消费者。为此,我只需发布命令并忘记它。我的代码如下, 但现在,我关心的是,我如何用它传递头值?

  • 我正在使用RestTemplate方法将请求发布到endpoint。我在不同的文件中有和,我想把它们传递给POST请求,除此之外,我还想把传递给endpoint。 我能够成功地传递头和请求,但不能传递包含凭据的Http实体 有没有办法让我三样东西都及格 > HttpHeader 要求 这是我的密码 以下代码位于NewHttpHeader中。包含和

  • 我是新的放心,我试图做一个非常基本的测试来检查响应体和状态。我在这个API调用中按要求传递头部,但当我运行测试时,我得到了401个未经授权的消息,而不是在响应体中显示结果。当我使用Postman运行相同的API时,它的工作很好 下面是我得到的控制台消息,其中显示401 响应发送=>io.restassured.internal.restassuredresponseImpl@18cebaa5响应正

  • 问题内容: 以传统方式添加事件侦听器: 但是我想适应addEventListener的方式: 它不起作用,因为我无法将getSelection()中的任何参数作为addEventListener方法中的第二个参数传递?据我所知,我只能使用没有括号的函数名。 任何的想法? 问题答案: 无需传递任何内容。用于的函数将自动绑定到当前元素。只需在您的函数中使用: 如果要将任意数据传递给函数,请将其包装在您

  • 问题内容: 在我的 app.js中, 我有以下3行。 user.js文件看起来就像普通的辅助方法。但是,它需要与数据库进行交互。 user.js 显然,我想在文件内部使用。无论如何,当我使用method 时,我可以将其传递给文件吗? 问题答案: 我认为您想做的是: 这使您可以将客户端作为模块中每个函数的参数,或作为模块作用域变量,如下所示: