【问题标题】:Vue.http.get w/ authorization - makes 2 requests and fails on iOS only带有授权的 Vue.http.get - 仅在 iOS 上发出 2 个请求并失败
【发布时间】:2019-05-01 21:21:53
【问题描述】:

我必须使用不记名令牌发出经过身份验证的 HTTP 请求。这在我测试过的所有东西上都能完美运行……除了 一些 iOS 设备。

  fetchWithToken : function( endpoint, token ){
    return Vue.http.get( urlBase + endpoint, {
      headers : {
        Authorization : 'Bearer ' + token
      }
    });
  },

据我所知,请求被发送了两次。请注意,此函数仅被调用一次(通过调试验证),但服务器会收到 2 个请求。第一个请求包含令牌并成功授权。第二个没有令牌并且失败,将该失败返回给我的应用程序的其余部分。

一次调用的两个 HTTP 请求让我想到了 CORS 预检请求。但是,它是同一个域,并且上述函数中的 urlBase 变量是相对地址('/api/'),而不是完整的 URL。

iOS 是否强制使用 CORS?如果是这样,为什么第二个请求没有授权标头而不是预检请求发送?

【问题讨论】:

  • 对服务器和前端的进一步日志显示,这 2 个请求实际上不是 CORS,而是 301 重定向。授权令牌从 iOS 上的第二个请求中被剥离,而不是其他设备。还没有解决方法。
  • 事件组合错误。服务器(一个 symfony 应用程序)正在为没有以斜线结尾的端点执行 301 重定向。显然,iOS 是唯一不让授权标头继续进行 301 重定向的用户代理。所以第一个请求有令牌,它是 301 的,而第二个请求没有。基本上 3 小时的日志记录和跟踪所有内容以了解我需要用 / 结束端点调用。

标签: ios vue.js vue-resource


【解决方案1】:

错误的事件组合。服务器(一个 symfony 应用程序)正在为没有以斜杠结尾的端点执行 301 重定向。显然,iOS 是唯一不让授权标头继续进行 301 重定向的用户代理。所以第一个请求有令牌,它是 301 的,而第二个请求没有。基本上需要 3 小时的日志记录和跟踪所有内容,以了解我需要用 / 结束端点调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多