【问题标题】:Is there a way for a SPA to check if there's a proxy and handling it properly?SPA 有没有办法检查是否有代理并正确处理它?
【发布时间】:2020-05-02 13:53:24
【问题描述】:

我们开发了一个 SPA SaaS,并于最近进行了软生产。

一切都很好,直到我们的一位客户告诉我们他们在使用该应用时遇到了问题。 一旦他们打开应用程序,对我们后端的第一个请求就会触发他们的代理凭据提示。希望在登录请求上。 他们必须输入他们的代理凭据才能让请求通过。所有后续请求都正确传递,他们可以使用该应用程序。

问题是:

当他们停止使用该应用程序,关闭浏览器并在第二天回来时,持久登录会尝试将他们连接到我们的后端,但不会触发代理凭据提示并且请求失败。所有后续请求也会失败。

为了让它再次工作,他们必须删除 chrome 中的所有应用程序数据(因此服务工作者未注册,本地存储和缓存被清除)。下一个 api 调用将触发他们的代理凭据提示,他们将能够再次工作。

那么有什么方法可以让应用知道代理是否已设置?如果未设置或其他任何方式触发代理提示?

我不完全了解这些代理是如何工作的,而且我们对代理设置的访问权限为零。 这肯定是证书在一段时间后到期的问题,但这就是我们现在所能弄清楚的。也许我们可以监控请求标头中的一些参数?

我们正在使用带有 axios 的 VueJS 来处理请求。

【问题讨论】:

    标签: vue.js proxy axios single-page-application


    【解决方案1】:

    我的猜测是当用户会话凭据过期时,您的 UI 没有处理重定向到登录页面。当用户第一次登录时,您应该在浏览器本地存储中存储用户已成功登录。如果您的服务器返回401 错误代码,您可以删除该标志并将用户重定向到登录页面。您可以使用路由器中的元字段来实现这一点。

    查看此链接了解如何使用元字段https://router.vuejs.org/guide/advanced/meta.html

    【讨论】:

    • 我想你误解了这里的问题。我们的持久登录功能没有问题。整个登录/凭据流程运行良好。该问题与我们无法控制的代理凭据有关。该提示是与我们的应用程序无关的原生 chrome 提示。它只是拦截对我们后端的第一次调用,请求凭据,然后授权我们的请求。
    • 我不确定我能提供什么帮助。还有为什么要投反对票?我根据你的描述做了一个猜测!
    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2020-01-07
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多