根据 OS 设置显示站点的区域版本

Microsoft Edge 提供操作系统 (OS) 区域偏好设置信息,以帮助网站作者在使用 Microsoft Edge 查看网站时在其网站上创建区域体验。 此功能允许网站作者为那些在 OS 中特别更改了区域偏好设置的用户提供价值,以反映他们的个人偏好。

用户希望看到日期、时间、数字和其他格式按照自己的喜好打印出来。 例如,美国地区将 7/2/2022 转换为 2022 年 7 月 2 日。 另一个地区可能会将同一日期转换为 2022 年 2 月 7 日,因为它们会反向读取月份和日期。

区域格式

为了反映用户对数据显示方式的区域首选项 ((例如日期) ),Microsoft Edge 在“设置共享其他 OS 区域格式”菜单的“语言”部分中提供了一个选项。

选中“受限(默认)”选项的“共享其他 OS 区域格式”菜单

授予对此设置的访问权限后,网站可以查看比之前可能更多的用户的特定区域偏好设置。 更改其 OS 区域偏好设置的用户现在可能会看到其偏好设置自动反映在更多网站中。

OS 区域数据显示代码

用户的格式设置偏好设置抽象成简单的区域代码,Web 应用程序使用该代码推断上面所述的有关日期、时间和其他格式设置偏好设置的各种详细信息。

网站可以将内置国际化 API 与区域代码配合使用,以将信息正确格式化为用户偏好设置。 国际化 API 可通过网络节省大量 MB 的数据传输,使网站保持精简,并使其能够快速轻松地适应不同的区域。

通常,网站的国际化用户体验仅与他们能够为当前用户确定的区域代码相匹配。

区域代码是两个字母的语言代码,后跟连字符和两个字母的区域代码。 Microsoft Edge 使用 ICU 区域代以理解区域代码。 ICU 是 Unicode 标准的国际化 API 的实现。 有关详细信息,请参阅 ICU-TC 主页

若要设置用户的语言偏好设置,Microsoft Edge 在首次安装时从 OS 获取默认值。 然后,用户可以更改 edge://settings/languages 中的语言偏好设置,并按优先级顺序对其进行排序。

“设置 > 语言”页的“首选语言”部分

UI、HTTP 标头和 API 按如下所示进行交互:

语言或区域数据 用户影响
设置>语言”页中的首选语言 为呈现 Microsoft Edge 选择的语言。 此语言/区域还用于设置日期、时间和数字等值的格式。
accept-language HTTP 标头 发送到服务器以允许网站显示正确语言的区域代码列表(在设置>语言>首选语言中定义)。 Microsoft Edge 按 edge://settings/languages 中指定的顺序发送区域代码。
navigator.language API(等类似) 插入网站的代码允许浏览器为用户输入和本地生成的其他内容显示正确的区域格式(如设置>语言>首选语言中所定义)。

区域数据显示选项

用户在 Microsoft Edge 上有三个选项,用于选择浏览器将共享的有关其区域的信息级别:

  • 受限(默认值)
  • 始终(不推荐)
  • 从不

有限

默认的推荐值为 受限。 此设置仅使用用户当前 Microsoft Edge 首选语言和用户选择的 OS 区域偏好设置的有效组合。 受限 受限性可确保网站在语言处理方面提供一致的语言体验(而不是以不可预测的组合方式混合语言)。

受限”选项比较从浏览器的当前首选显示语言派生的区域代码的语言部分,以及来自 OS 设置的区域代码,以及语言部分是否匹配以及生成的区域代码是否有效组合时,会将区域代码作为默认区域设置提供给网站。

如果 OS 指定的区域语言与 Microsoft Edge 首选语言不匹配,“受限”选项将充当 “从不”选项,并回退到从浏览器的首选显示语言派生的区域代码。

注意:受限选项类似于当前用于公开 OS 区域代码的 Firefox 行为,如区域偏好设置 - Firefox 源文档 (mozilla.org) 中所述。

始终

如果 选择“始终(不推荐)”,则用户的 OS 区域偏好设置将提供给网站,没有任何限制或限制。 用户可能会暴露于指纹和网站兼容性问题(语言和格式的使用不一致)。 请参阅下面的“避免潜在的滥用”部分。)

从不

用户可以通过选择 “从不”来禁用 OS 区域信息的共享。 “ 从不 ”选项仍允许网站读取区域信息,但会阻止用户所做的任何特定 OS 区域自定义项公开到网站内容。 而是使用浏览器的首选显示语言来派生默认区域。

策略控件

Microsoft Edge 中的相关新策略 DefaultShareAdditionalOSRegionSetting为企业级或企业级默认配置提供设置。 此设置接受具有以下潜在值的整数:

数字 说明
0 有限
1 始终
2 从不

此外,较旧的策略 ApplicationLocaleValue设置 Microsoft Edge 区域设置并锁定它以防止用户更改它。

避免潜在滥用

我们认为,受限是大多数用户的正确选择。 受限遵循用户的区域偏好设置,同时引入网站误用此信息的风险最低。

指纹识别熵

OS 区域信息可能被误用,从而损害用户的隐私。 区域信息可帮助黑客建立指纹识别熵。 与当今平台中许多其他预先存在的熵位结合使用,可以唯一标识用户,从而导致更多潜在的次要危害。

虽然用户的区域和语言已通过 Web 平台提供,但用户通常会遇到跨地理区域相似的知名区域代码。 由于样本量非常大,任何特定区域代码脱颖而出的风险都很小,因此风险也很小。 如果用户将其 OS 偏好设置更改为唯一语言 + 区域,则网站能够识别总体中的异常情况,并唯一标识关联的用户。

内容演示文稿

OS 区域信息也可能被误用,并导致网站的语言演示文稿不一致。 Microsoft Edge 为网站开发人员提供多种语言和区域 API。 网站可以在一个位置处理区域信息,同时从另一个位置派生语言偏好设置。

如果语言和区域信息匹配一致,那么网站用于汇编其内容演示文稿的 API 并不重要。 但是,如果网站从多个 API 读取语言信息,并且这些 API 返回不同的语言代码,则网站可能会无意中开始混合和匹配区域偏好设置,从而产生奇怪的用户体验。 例如,将语言和区域偏好设置混合在一起的情况,即“电子邮件于 2021 年 1 月 5 日上午发送”。

开发人员详细信息

共享其他 OS 区域格式”的新设置直接影响 JavaScript Intl 对象的默认区域值以及使用默认区域(如 Date 构造函数)的所有其他 JavaScript API。

如果为 Intl 对象的构造函数(如 DateTimeFormat)提供了现有的区域代码,则其行为保持不变。 但是,如果未提供特定区域代码,则构造函数将使用 默认区域代码。 新的用户偏好设置还会影响依赖于默认区域代码的其他日期和时间格式 API,例如 Date

例如,DateTimeFormat 可以通过以下表达式使用用户的默认区域代码(和检查)创建:

Intl.DateTimeFormat().resolvedOptions().locale

平台中的其他区域(例如通过 HTTP/HTTPS GET 请求发送到服务器的 accept-languages 标头)以及 navigator.languagenavigator.languages API不会受到 OS 共享的区域信息的影响。