升级到 21.10 后,我在使用 Javascript fetch() 从服务器获取页面的 HTML 页面上遇到了 CORS 问题。使用 21.10 下的 Chromium(或 OSX 上的 Firefox 或 Safari)时,同一页面没有问题。
查看检查器,区别似乎在于“Snap Firefox”:
- 对于 REFERER 标头有不同的值(它缩写为http://127.0.0.1:5000/而不是在工作浏览器中使用 http://localhost:5000/resource/527706d7e339cac99572cad1b7b789c8);
- 有一个带有值的 ORIGIN 标头http://127.0.0.1:5000,在可用的浏览器中不存在
有人知道为什么 Snap Firefox 会这样做以及如何解决吗?
更新/回答:
tl/dr; 它归结为 127.0.0.1 和 localhost 之间的区别,但有一个变化。
首先,CORS 错误仅在 127.0.0.1 时发生,而不会在 localhost 时发生。我在开发中一直使用 localhost,所以我不知道这种区别。
其次,Snap Firefox 不喜欢“localhost:5000”。这就是我发现页面无法正常工作的原因。它确实希望您添加协议 -> “http://localhost:5000”有效。显然,没有规则说 localhost 必须解析为 http://localhost,因此 Snap Firefox 没有错。
但是 OS X 上的 Firefox做接受“localhost:5000”(通过自动添加前缀 http://)——就像 OS X 上的 Safari 或 Ubuntu 上的 Chromium 一样。看来 Snap Firefox 是唯一一个不是添加 http:// 字符串。我很确定这是 Ubuntu 20.04 和 20.10 之间的变化。
为了保持一致性,我认为 Snap Firefox 应该恢复旧的行为(与 OS X Firefox 一致),但不这样做可能有充分的理由。