【问题标题】:"Handler crashed with error runtime error: invalid memory address or nil pointer dereference", but POSTMAN is ok! Why this happens?“处理程序因错误运行时错误而崩溃:无效的内存地址或 nil 指针取消引用”,但 POSTMAN 没问题!为什么会发生这种情况?
【发布时间】:2020-06-30 15:06:21
【问题描述】:

我使用 vue 并分别用于前端和后端。我将发布请求发送到我的服务器并收到 403 错误代码消息(不允许)。但是在邮递员中,我得到了物品并且很好。

Vue 和 Vuex

我的 axios 发帖请求:

const response = await this.$axios.post(`http://localhost:8000/v1/org/${params.organization}/kkms/${params.kkm}/closeShift`,{
  headers : { 
     'token' : this.state.token.value
}});

我知道我还应该在标头中使用其他属性,例如“Content-Type”等,但知道它仅适用于其他请求中的“令牌”属性。我想知道是后端问题还是前端问题?

【问题讨论】:

  • 您需要显示您的代码和遇到的错误以及完整的堆栈跟踪。
  • 该错误消息看起来很像典型的 Go 错误消息。因此,如果您唯一的问题是它是在后端还是前端引起的,那么答案就是后端。但无论如何,您都应该知道这一点,具体取决于您在哪里看到错误。如果您确实需要帮助解决错误,则需要包含完整的错误消息以及导致它的代码。
  • @Flimzy 谢谢!我对在“Go”方面工作的伙伴说
  • 我从未在服务器端使用过Go,但我多次遇到类似问题。只是作为一个建议,看看它是否可能是一个不同的域问题,或者尝试发送添加到 axios 请求选项的请求 ´axios.get(url, {withCredentials: true})´
  • 另外,我看到您正在使用 axios 发出 POST 请求。当您发布时,结构为axios.post(url,params,options),您似乎正在将选项标头设置在帖子参数应该放在的位置

标签: http axios authorization http-post


【解决方案1】:

您的 axios 请求中似乎有错误。 您收到 403,这意味着您未获得授权(或者有时其他原因,请检查问题中的 cmets 并在此处查看)。

可以在axios docs 中找到,发布请求如下所示: axios.post(url[, data[, config]]).

它接受配置(因此标题)作为第三个参数,而您将其设置为第二个参数。添加一个空的 FormData 对象作为第二个参数,然后将您的配置转移到第三个参数。

const fakeData = new FormData();
const response = await this.$axios.post(`http://localhost:8000/v1/org/${params.organization}/kkms/${params.kkm}/closeShift`,
fakeData,
{
  headers : { 
               'token' : this.state.token.value
             }
});

【讨论】:

  • 即使客户端的代码有错误,这与问题中的错误信息无关,这是服务器端的错误消息:服务器代码无论如何都不允许失败搞砸了客户的请求。
  • 也就是说,我很钦佩您帮助 OP 解决切线问题的愿望,但这仍然不能作为对所问问题的正确答案。该问题应该被关闭或大量修改以包含失败的实际 Go 代码。
  • 来自维基百科:HTTP 403 是一个 HTTP 状态代码,意味着由于某种原因禁止访问所请求的资源。服务器理解请求,但由于与客户端相关的问题而无法完成。
  • 我认为你看的是我的分数,而不是我的答案
  • 我猜这只是 Go 端行为不端的 HTTP 处理程序的副产品。 OP 出于某种原因将两个不相关的问题混为一谈:处理程序代码中的崩溃和处理程序在某些 情况下返回 403。
猜你喜欢
  • 1970-01-01
  • 2014-12-30
  • 2015-07-12
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 2015-02-24
  • 1970-01-01
相关资源
最近更新 更多