代码之家  ›  专栏  ›  技术社区  ›  atlas_scoffed

在从本地主机开发站点中的远程API端点获取请求中使用凭据

  •  -1
  • atlas_scoffed  · 技术社区  · 3 年前

    使用移除API端点进行身份验证后,浏览器具有JWT令牌cookie。

    我可以通过查看网络请求选项卡,以及获取需要auth的API端点来确认这一点。使用Firefox。Firefox会自动向端点发出GET请求,由于主机名匹配,它会自动包含凭据。我得到一个JSON响应,200 OK。

    现在,问题是,当尝试使用本地服务器在本地主机上本地开发站点时,API请求被发送到远程dev API端点,但返回401未经授权,因为Firefox没有发送凭据。

    Firefox不应该因为主机名匹配而包含凭据吗?即使站点主机名是localhost?

    我在firefox中禁用了CORS,但在远程服务器上没有。

    我可以看出这是有效的,因为否则网络选项卡上会显示请求因CORS而被阻止。

    如何使用Cookie对本地主机站点上的远程API端点进行身份验证?

    在获取请求时,凭据被设置为“include”。

    铬也有同样的问题。

    0 回复  |  直到 3 年前
        1
  •  1
  •   Gary Archer    3 年前

    Cookie规则在 RFC6265 我怀疑你们也遇到了第4.1.2.7节中的相同站点规则。

    如果cookie被视为第三方(来自与网络来源不在同一站点的域),当服务器在设置的cookie响应标头中发送cookie时,浏览器将拒绝保存或发送cookie。这是对用户隐私的保护。

    无效示例

    有效的例子

    可以通过在主机文件中添加这样的条目,然后在浏览器中使用该URL来启用此设置:

    127.0.0.1 www.mycompany-dev.com
    

    规则

    对于web源和API位于同一站点,端口可以不同,但方案(http或https)必须匹配。如果远程API URL使用https,则还需要使用https在本地运行web应用程序。

    CORS也必须正确配置。我将通过将开发web源添加到API允许的源中来实现这一点。就我个人而言,我避免将localhost用于这种类型的解决方案。

        2
  •  1
  •   atlas_scoffed    3 年前

    Firefox“增强的跟踪保护”正在覆盖我的cookie。ETP在严格模式下停止发送所有跨站点cookie。在本地主机站点上禁用ETP后,cookie开始附加到远程api请求。

    Cookie标志:

    • httpOnly:true
    • 路径:“/”
    • secure:true

    我仍然不清楚Firefox Developer是默认为Lax还是SameSite默认为None。关于:config有一个名为 network.cookie.sameSite.laxByDefault 设置为“false”。。。但这可能是一个遗留设置,因为该网站与之相矛盾,称默认设置为Lax。

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie