【问题标题】:Why is fetch query always returning error segment?为什么获取查询总是返回错误段?
【发布时间】:2021-05-29 12:11:50
【问题描述】:

我正在使用 react-native 移动应用程序中的以下代码对 dj-rest-auth 本地链接进行社交身份验证调用。但是我总是收到一个错误。请让我知道是什么问题。

  fetch(
    "http://localhost:8000/dj-rest-auth/facebook/",
    {
      method: "POST",
      headers: {
        'Accept': 'application/json',
        'Content-type':'application/json'
      },
      xsrfCookieName:"csrftoken",
      xsrfHeaderName:'X-CSRFToken',
      body:JSON.stringify({access_token : resolvedToken})
    }
  )
  .then(resp => resp.json())
  .then(data => {
    console.log(data);
  }  
  )
  .catch(error => console.log(error))

错误详情:

Network request failed
at node_modules/whatwg-fetch/dist/fetch.umd.js:535:17 in setTimeout$argument_0
at [native code]:null in callFunctionReturnFlushedQueue

替代错误更新: 如果我将 axios 用于 API 请求而不是 fetch,即 await axios.post 而不是 fetch,那么我会收到以下错误:

Network Error
at node_modules/axios/lib/core/createError.js:16:14 in createError
at node_modules/axios/lib/adapters/xhr.js:84:24 in handleError
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:600:10 in setReadyState
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:395:6 in __didCompleteResponse
at node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js:189:10 in emit
at [native code]:null in callFunctionReturnFlushedQueue

【问题讨论】:

  • “但是我总是收到错误” 错误是什么?我们需要更多详细信息来帮助您解决问题。请更新您的问题。
  • 能否提供错误详情
  • 如果我记录数据,则显示未定义。
  • console.log(error) 怎么样?
  • 更新了错误详情

标签: javascript react-native fetch-api django-rest-auth


【解决方案1】:

问题是它找不到resolvedToken 变量。所以我在代码之上添加了,效果很好。

var resolvedToken = "2222";
fetch(
    "http://localhost:8000/dj-rest-auth/facebook/", {
      method: "POST",
      headers: {
        'Accept': 'application/json',
        'Content-type': 'application/json'
      },
      xsrfCookieName: "csrftoken",
      xsrfHeaderName: 'X-CSRF-Token',
      body: JSON.stringify({
        access_token: resolvedToken
      })
    }
  )
  .then(resp => resp.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => console.log(error))

【讨论】:

  • 试过了。同样的错误仍然存​​在。此外,resolvedToken 已经具有令牌值并正在控制台中打印。
【解决方案2】:

由于在此处使用本地主机地址进行 django 本地服务器调用,因此遇到了错误。 localhost 或 127.0.0.1 的问题仍然存在。

另外,接下来我尝试在笔记本电脑上使用移动热点,然后使用笔记本电脑 Wi-Fi 当前分配的 IP 地址来运行 django 服务器并对其进行 API 调用。如果使用移动热点并且遇到相同的错误,这将不起作用。

但是,在使用 LAN 路由器,然后使用分配给笔记本电脑的本地 Wi-Fi IP 地址后,问题得到了解决。

这现在已经产生了新的问题。 API 调用成功,我仅在第一次 API 调用或第一次运行时收到令牌。此后我收到缺少或无效的 csrf 令牌的错误。

但是,由于这是一个新问题并且与此问题不同,我目前正在关闭此问题。如果我无法解决新问题,我可能会提出新问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 2015-11-26
    • 2014-01-26
    • 2014-09-09
    • 2019-09-11
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多