3

我们有一个正在开发中的 PHP Web 应用程序,它不应该被公众访问(还),但我们不想实现自定义解决方案来防止这种情况发生,所以我们求助于 HTTP 基本身份验证,它通常工作正常,但有一个问题与 iPhone 用户。

症状看起来与本文中描述的完全一样

用户收到提示,输入凭据,被授予对应用程序的访问权限。到目前为止,一切都很好。但当他尝试浏览应用程序时,他再次收到提示。该应用程序在 443 上提供服务,并且确实涉及重定向。

这与上面提到的文章中描述的情况完全吻合,差不多。文章指出问题已在古老的 Safari 6.0 中得到解决,我们的用户正在使用最新的 iOS 和 Safari。

发生了什么事以及在哪里看?我们做的认证错了吗?文章有误吗?这是一个新的错误吗?

4

1 回答 1

1

我只是在这上面花了太多时间。

iPhone 上的 Safari 似乎应用了更严格的安全策略。因此,默认情况下,它不会发送带有 css、脚本或 ajax 请求的基本身份验证凭据。因此,对于这些请求,Safari 会一次又一次地提示基本身份验证。

对于 css 和脚本,您可以:

<link rel="stylesheet" href="..." crossorigin="use-credentials" />
<script src="..." crossorigin="use-credentials" />

对于 ajax 请求,应该有一个发送凭据的选项,具体取决于您发送请求的方式,例如:

fetch('/path/to/json', {credentials: 'include'})

也许这也是你遇到的问题?

于 2020-11-25T18:52:23.197 回答