首页 > 解决方案 > 为什么我的前端 Javascript 显示的 API 响应与浏览器不同?

问题描述

我有一个带有链接到 Stripe API 的 API 函数的 Flask 后端。当我在 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"]})

当在邮递员中调用时,我得到这个作为响应(我期望)

{
  "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 不同?

标签: javascriptpythonapiflaskapi-design

解决方案


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

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

推荐阅读