最佳方法:访问控制允许来源多源域

2024-01-24

这个问题之前已经在这里被问过,并给出了一系列很好的答案,主要是:访问控制允许来源多源域? https://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains

然而,对于应采取的批准方法的解释似乎存在差距。通读 W3 文档,我们发现在我看来存在指导冲突。

首先我们看到给出的答案为right在之前的许多答案中都采用了这种方法,这表明主机服务器必须动态回显给定的“来源”(如果它出现在预定义的“白名单”上)。http://www.w3.org/TR/cors/#resource-implementation http://www.w3.org/TR/cors/#resource-implementation

然而,使用的许多答案和方法也提到了一个空格分隔的列表,它也可以用作传递多个“起源”以允许的方法。如果我们看一下 W3 文档的另一部分:http://www.w3.org/wiki/CORS_Enabled http://www.w3.org/wiki/CORS_Enabled我们在页面的第一部分看到这样的示例:

 Access-Control-Allow-Origin: http://example.com:8080 http://blah.example.com http://foo.example.com

在这两种方法中,我同样乐意合并其中任何一种,但是可能需要列出大量 URL 列表,因此我想确保我第一次就正确执行此操作。如果有人对上述两种方法有任何见解,我将非常感激听到您选择中的决定,并且如果有关于我可能错过的推荐方法的明确指南。


有关于此的文档似乎暗示它允许使用空格分隔列表的多个来源,但这并不是它的实际含义。以下是我能收集到的对你的问题最明确的答案:Access-Control-Allow-Originheader 的值应该与Origin只要您愿意,就可以使用标头。

您发送回客户端的不是白名单的原因是因为从技术上讲,客户端可以发送空格分隔的来源列表,以便服务器可以验证请求。源列表的目的是因为请求可能来自多个源(即请求跨域重定向)。测试套件 http://w3c-test.org/cors/redirect-origin.htm即使永远不会生成空格分隔的列表(至少由 Firefox 生成),也可以通过不同的重定向可能性轻松观察到此行为。

这在第一个下部有说明链接的 W3C 文档 http://www.w3.org/TR/cors/#access-control-allow-origin-response-header您提供:

Access-Control-Allow-Origin 标头通过在响应中返回 Origin 请求标头的值、“*”或“null”来指示资源是否可以共享。 ABNF:

访问控制允许来源 =“访问控制允许来源”“:”来源列表或空 https://www.rfc-editor.org/rfc/rfc6454#section-7.1 | "*"

实际上,origin-list-or-null 的产生受到更多限制。它不是允许以空格分隔的来源列表,而是单个来源或字符串“null”。

又在原产地列表的定义 https://www.rfc-editor.org/rfc/rfc6454#section-7.1。此外,它还显示,如果您确实希望允许字符串“null”作为来源,则无论如何它都无法嵌入到来源列表中。

因此,坚持使用基于客户端的动态生成的标头Origin标头以及是否与您的白名单匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最佳方法:访问控制允许来源多源域 的相关文章

随机推荐

  • 迭代除 x item 之外的字典

    我有一个这种格式的字典 d data key 1 value 1 key 2 value 2 key 3 value 3 key x value x key n value n 我必须迭代它的项目 for key value in colu
  • 如何区分 Switch,Checkbox 值是由用户更改还是以编程方式(包括通过保留)更改?

    setOnCheckedChangeListener new OnCheckedChangeListener Override public void onCheckedChanged CompoundButton buttonView b
  • 在knockout js中将循环结构转换为JSON

    我有两个网格结构 在其中一个网格结构中我多次有多个字段 而在其中一个网格结构中我一次有两个字段 我为每个网格编写 apply 方法 我的第一个网格 id 工作正常 但是当我单击第二个网格上的 应用 时 我收到此错误 Uncaught Typ
  • 在 C++ 软件中纳入共享软件限制

    我希望在共享软件的基础上实现我的软件 以便用户 给予最多 例如 30 天的试用期来试用该软件 购买时 我打算向用户提供一个随机生成的密钥 输入该密钥时 再次启用该软件 我以前从未走过这条路 所以任何建议 反馈或关于如何完成此操作的 标准 方
  • 避免重新计算 Beam Python SDK 中所有云存储文件的大小

    我正在开发一个从 Google Cloud Storage GCS 目录读取约 500 万个文件的管道 我已将其配置为在 Google Cloud Dataflow 上运行 问题是 当我启动管道时 需要几个小时 计算所有文件的大小 INFO
  • 找不到 pyinstaller 命令

    我在 VirtualBox 上使用 Ubuntu 我该如何添加pyinstaller to the PATH 问题是当我说 pyinstaller file py 它说找不到 pyinstaller 命令 它说它安装正确 根据其他帖子 我认
  • 删除 X-Powered-By

    如何删除 PHP 中的 X Powered By 标头 我在 Apache 服务器上 使用 php 5 21 我无法在 php 中使用 header remove 函数 因为 5 21 不支持它 我使用了 Header unset X Po
  • 检测点是否在 SVG 路径内

    我正在尝试检测给定点是否位于 Objective C 中的闭合 SVG 路径内 我不知道如何做数学 我有一个路径的坐标 我想确定一个随机点是在路径内部还是外部 这是路径坐标的示例 M673 460 c2 0 4 1 5 2 1 1 2 2
  • Objective-C 中的全局变量 - extern 和 .m 文件顶部声明的差异

    我知道你可以使用 extern 在 Objective C 中定义一个全局变量 但我刚刚意识到我在第一个方法之前在 m 文件顶部声明的变量也意外地是全局的 这导致了一些问题 问题 我将它们移至头文件的 interface 部分 我认为这正确
  • SVN 错误:预期的 fs 格式介于“1”和“3”之间;找到格式“4”

    这就是我所做的 我已经安装了 svnserve 作为服务 并使用以下命令启动它网络启动svn服务命令 我输入了svn ls svn localhost测试该服务 但它返回了本文标题中所述的错误 我进入了svn 版本 and svnserve
  • 将一个对象属性值传输到另一个对象

    首先 我知道自动映射器 而且我不想使用它 因为我正在学习C 我想深入了解它 所以我正在尝试自己解决这个问题 如下所述 但是 我正在尝试创建一个属性复制器 以将一种类型的属性值复制到另一种类型 前提是该属性具有相同的名称和类型 并且可以从源读
  • 为什么 git 会重复添加和删除 Storyboard 部分?

    当保存故事板并将更改提交到 git 时 整个过程很可能会发生变化
  • 如何快速过滤字典并将结果输出到 CollectionViewController 中

    我正在制作一个显示口袋妖怪及其类型的应用程序 该应用程序的一部分也会显示出它们的弱点 我有一个列出所有神奇宝贝的全局变量 如下所示 var objects id 001 typeTwo Poison name Bulbasaur type
  • 对 Maybe a 进行约束,其中 Eq a

    我如何约束 Maybe a where Eq a 它必须是种类 gt 约束 我尝试过的 class a Maybe b Eq b gt K a where instance a Maybe b Eq b gt K a where Error
  • Rust 单元测试后清理的好方法是什么?

    由于测试函数会在失败时中止 因此不能简单地在被测试函数结束时进行清理 在其他语言的测试框架中 通常有一种方法可以设置一个回调来处理每个测试函数末尾的清理工作 由于测试函数会在失败时中止 因此不能简单地在被测试函数结束时进行清理 使用 RAI
  • 如何使控件正确绘制/刷新

    我有一个源自支票簿的控件 我将其称为 SettingBooleanButton 但是当将任何窗口或对话框拖动到该控件上时 该控件会保留拖动的迹象 下图显示了将应用程序窗口拖动到控件上方的效果 这是我的 OnPaint 代码块 Public
  • Famo.us IframeSurface

    我尝试在表面内实现 iframe globals define define function require exports module use strict import dependencies var Engine require
  • .NET REGEX 匹配匹配空字符串

    我有这个 pattern 0 9 0 9 Target X 113 3413475 Y 18 2054775 我想匹配数字 它与测试软件中的查找相匹配 例如http regexpal com http regexpal com 和正则表达式
  • PostgreSQL 查询约束中允许的值列表?

    给定一个名为的 PostgreSQL 表requests有一列名为status和这样的约束 ALTER TABLE requests ADD CONSTRAINT allowed status types CHECK status IN p
  • 最佳方法:访问控制允许来源多源域

    这个问题之前已经在这里被问过 并给出了一系列很好的答案 主要是 访问控制允许来源多源域 https stackoverflow com questions 1653308 access control allow origin multip