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

向外部API发出POST请求时出现NUXT重定向问题

公孙高轩
2023-03-14

我在Nuxt中创建了一个表单。我正试着把它提交给一个外部API。预期的响应是JWT令牌。

  async login() {
      const res = await this.$axios.$post(`/api/token`, {
        username: this.username,
        password: this.password
      }, this.headers )
       console.log(res)
    }

尝试直接调用API会导致CORS错误,因此我在nuxt.confix.js中使用代理设置。

...
  modules: [
    '@nuxtjs/axios',
    '@nuxtjs/proxy'
  ],
  axios: {
    baseURL: '/',
    proxy: true
  },
  proxy: {
    '/api/': { target: 'https://<apiurl>.com/', changeOrigin: true }
  },
...

现在,当我检查网络选项卡时,它显示了301重定向,但在post请求中发送的数据被丢弃,它向API发出get请求,返回405错误(因为它期待带有数据的POST请求而不是空GET请求)。

如何使用 NUXT 向外部 API 发出 POST 请求?这是一个选项吗?

我尝试更改changeOrigin: false,这似乎解决了这个问题,但是它抛出了一个500 server错误和一个npm错误

 ERROR  [HPM] Error occurred while proxying request localhost:3000/api/token to https://<apiurl>.com/ [ERR_TLS_CERT_ALTNAME_INVALID] (https://nodejs.org/api/errors.html#errors_common_system_errors)

谢谢你

共有1个答案

禹德水
2023-03-14

问题不在于如何将api发送给外部API...问题出在外部API本身...确保外部API没有执行任何操作所需的凭据...

如果你能向https://jsonplaceholder.typicode.com/posts发出请求并得到结果,那就意味着你的代码没有问题...大多数情况下,cors错误是后端问题...这意味着..从事这项工作的后端开发人员应该修复它

 类似资料:
  • 我正在向API发出post请求,但我看到的问题是authtoken是在请求负载中发送的,而不是在网络选项卡中发送的请求头。 标头应该出现在请求标头中,而不是请求负载中。

  • 我想要的是从一个API获取一个对象,并将HTTP(例如,jQuery的AJAX)请求发送到一个外部API。我该怎么开始?我对谷歌先生做了研究,但没有发现任何有用的东西。 我开始怀疑这是可能的吗?在这篇文章Laravel 4使后请求从控制器到外部url与数据它看起来像是可以做到的。但是没有例子也没有任何来源可以找到一些留档。 请帮帮我?

  • 想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 我是Spring框架Java新手,我需要一种从我的应用程序调用外部Rest Api的方法。是否有任何“最佳实践”超文本传输协议客户端,以便我可以根据需要使用? 提前感谢

  • 问题内容: 我有一个RESTful API,我已在EC2实例上使用Elasticsearch的实现公开了索引内容的语料库。我可以通过从终端机(MacOSX)运行以下命令来查询搜索: 如何使用或(不确定要使用哪个请求- 一直在使用urllib2,但听说请求更好…)将以上转换为API请求?我是否可以通过标题? 问题答案: 使用请求: 然后,根据您的API返回的响应类型,您可能需要查看或(或可能先检查)

  • 我有一个RESTful API,我在EC2实例上使用Elasticsearch实现来索引内容语料库。我可以通过从我的终端(MacOSX)运行以下命令来查询搜索: 我如何使用python/requests或python/urllib2将上述内容转换为API请求(不确定应该选择哪一个-一直在使用urllib2,但听说请求更好?我是作为标题传递还是以其他方式传递?

  • Angular.js:14516可能未处理的拒绝:{“data”:null,“status”:-1,“config”:{“method”:“post”,“transformrequest”:[null],“transformresponse”:[null],“jsonpcallbackparam”:“callback”,“url”:“http://localhost:3000/lvl/2/data