为啥我的前端 Javascript 显示的 API 响应与浏览器不同? [复制]

Posted

技术标签:

【中文标题】为啥我的前端 Javascript 显示的 API 响应与浏览器不同? [复制]【英文标题】:Why doesn't my fronend Javascript show the same response from API as browser? [duplicate]为什么我的前端 Javascript 显示的 API 响应与浏览器不同? [复制] 【发布时间】:2021-02-19 22:01:43 【问题描述】:

我的 Flask 后端带有一个链接到 Stripe API 的 API 函数。当我在 Postman 或浏览器中调用它时,我得到的正是我所期望的(Stripe 生成的 URL)。然而,当我在我的 javascript 代码中调用它时,我得到了完全不同的东西,我不知道为什么。

这是我在 Flask/Python 中的代码:

@app.route('/manage-subscription-portal', methods=['GET'])
def manageSubscriptionPortal():
  portalTry = stripe.billing_portal.Session.create(
      customer='cus_XXXXXXXXXXX',
      return_url='https://example.com/account',
  )  
  print(portalTry["url"])
  return jsonify('url' : portalTry["url"])

当在 Postman 中调用时,我会得到这个响应(这是我所期望的)


  "url": "https://billing.stripe.com/session/_ILW65rxo7ix3RLm3SBrZ9PQeDV7pHlm"

这是我链接到按钮的 Javascript 代码

 manageSubscription.addEventListener("click", function()
    fetch('/manage-subscription-portal').then(response => 
      console.log(response)
      return response
    ).then(portalSession => 
      console.log(portalSession)
    )
  )

'response' 和 'portalSession' 都给出了图片中显示的内容

有谁知道为什么我的 Javascript 代码与 Postman 中的不一样?

【问题讨论】:

【参考方案1】:

您好,如果您使用的是 html5 fetch API,您可以像这样从服务器访问返回的 JSON

manageSubscription.addEventListener("click", function()
  fetch('/manage-subscription-portal').then(response => 
    return response.json() 
  ).then(portalSession => 
    console.log(portalSession)
  )
)

【讨论】:

以上是关于为啥我的前端 Javascript 显示的 API 响应与浏览器不同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 JavaScript 函数显然没有被调用?

为啥我无法让我的后端文件 server.js 连接到前端?错误:POST http://localhost:3000/api/person/add 400(错误请求)?

为啥我的属性在 Magento 1.9.1.0 前端显示位置不正确?

django & Vue.js:为啥我的 VueJs 组件没有显示在前端?

如何在前端的 Javascript Ajax API 调用中隐藏我的 JWT 令牌?

为啥我的图像不会显示在 javascript 画布上?