【问题标题】:Issues with Header set Access-Control-Allow-Origin标头集 Access-Control-Allow-Origin 的问题
【发布时间】:2017-01-13 23:32:42
【问题描述】:

我的 .htaccess 文件中有以下内容:

标头集 Access-Control-Allow-Origin: "*"

完美运行!但这是一种糟糕的安全做法。

当我将其更改为:

标头集 Access-Control-Allow-Origin: "http://example.com"

我收到以下错误:

跨域请求被阻止:同源策略不允许读取位于http://example.com/oc/catalog/view/javascript/font-awesome/fonts/fontawesome-webfont.woff2?v=4.4.0 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”与“http://example.com”不匹配)。

我该如何处理?

【问题讨论】:

  • 错误信息没有这样说。如果是这样,那么您已经为对 same origin 的请求生成了跨源错误。您似乎已通过将每个主机名替换为 example.com 来清理 URL,并在此过程中隐藏了问题。
  • 我没有对url进行任何更改,只是我将网站名称更改为example。如果您希望我列出未经编辑的信息,请告诉我。请注意,我通过 www.example.com 而不是 example.com 访问网站时收到此错误
  • 是的,列出未编辑的信息。目前,该问题声称您正在从http://example.com/ 向http://example.com/ 发出请求,但由于不是来自http://example.com/,因此被阻止。
  • 我正在访问网站 www.arvindint.com/oc。在 htaccess 中,我输入了 -Header set Access-Control-Allow-Origin: "http://arvindint.com"。我得到的错误是 - Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at arvindint.com/oc/catalog/view/javascript/font-awesome/fonts/‌​…. (Reason: CORS header 'Access-Control-Allow-Origin' does not match 'arvindint.com'). Stackoverflow 似乎正在删除 cmets 中链接之前的“http://”。
  • 您(在 Chrome 中)收到的实际错误消息是:Font from origin 'http://arvindint.com' has been blocked from loading by Cross-Origin Resource Sharing policy: The 'Access-Control-Allow-Origin' header has a value 'http://arvindint.com' that is not equal to the supplied origin. Origin 'http://www.arvindint.com' is therefore not allowed access. 正如我的回答所说,http://arvindint.com 与 http://www.arvindint.com 不同。其中有一个额外的www.。

标签: apache .htaccess


【解决方案1】:

来自现场:

Font from origin 'http://arvindint.com' has been blocked from loading by Cross-Origin Resource Sharing policy: The 'Access-Control-Allow-Origin' header has a value 'http://arvindint.com' that is not equal to the supplied origin. Origin 'http://www.arvindint.com' is therefore not allowed access.

来自 OP 的评论:

请注意,我通过 www.example.com 而不是 example.com 访问网站时收到此错误

那是你的问题。

如果您向example.com 授予权限,但未授予www.example.com 权限,则您无法从www.example.com 访问它。

权限基于每个源,而不是基于每秒级别的域。

选择两个主机名之一(带或不带www)并坚持使用它。从一个重定向到另一个。不要在两个不同的主机名上托管您的网站。这样做麻烦多于值得。

【讨论】:

  • 感谢您对重定向的建议。但是,如果我希望上述情况起作用,我是否还应该将 - Header set Access-Control-Allow-Origin: "http://www.example.com" 添加到 htaccess 文件中?
  • 没有。您只能提供一个值。如果您不使用通配符并且需要支持多个来源,那么您必须动态生成它。如果您不想要通用 *,则不能使用静态值。
猜你喜欢
  • 2023-02-14
  • 2017-06-10
  • 2016-01-11
  • 2015-12-28
  • 2019-06-17
  • 2017-12-11
  • 2021-10-20
  • 2018-03-04
  • 2019-02-07
相关资源
最近更新 更多