访问-控制-允许-起源

我正在创建一个外部加载到其他站点的脚本。它加载 CSS 和 HTML,在我自己的服务器上运行良好。

然而,当我在另一个网站上试用它时,它显示了这个可怕的错误:

Access-Control-Allow-Origin

在这里你可以看到它完美地加载: http://tzook.info/bot/

但在另一个网站上,它显示了错误: Http://cantloseweight.co/robot/

我将加载脚本上传到 jsfiddle: Http://jsfiddle.net/tl5lk/

我试着像这样编辑 htaccess 文件:

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
</IfModule>

或者像这样:

Header set Access-Control-Allow-Origin *

但还是没用。

464930 次浏览

在外部根文件夹的. htaccess 中尝试这个:

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

如果它只涉及.js 脚本,那么您应该将上面的代码包装在下面的代码中:

<FilesMatch "\.(js)$">
...
</FilesMatch>

根据我的经验

如果它不工作从内部 php这样做在 .htaccess它为我工作

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin http://www.vknyvz.com
Header set Access-Control-Allow-Credentials true
</IfModule>
  • 凭据可以是真或假,这取决于您的 ajax 请求参数

没有人说你也必须启用 Mod _ headers,所以如果仍然不工作,试试这个:

(以下技巧适用于 Ubuntu,不知道其他发行版)

可以检查已加载模块的列表

apache2ctl -M

启用可以使用的 mod _ header

a2enmod headers

当然,在 Apache 发生任何变化之后,你必须重新启动它:

/etc/init.d/apache2 restart

那你可以用

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

如果 mod _ headers 不是活动的,那么这一行将什么也不做。您可以尝试跳过 if 子句并在配置中添加 Header set Access-Control-Allow-Origin "*",如果 mod _ headers 不活动,那么它应该在启动时抛出错误。

在 Zend Framework 2.0中,我遇到了这个问题。可以用两种方法解决。我更喜欢 htaccess 或者 php 头文件。所以我修改了。Htaccess 来自:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

RewriteEngine On


<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>


RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

然后就开始起作用了

如果在访问字体时遇到问题,则使用以下指令向字体文件夹添加 .htaccess文件。可以很容易地修改与 。 css. js文件使用。

<FilesMatch "\.(eot|ttf|otf|woff)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>

顺便说一句。Htaccess 配置必须在承载 API 的服务器上完成。例如,您在 x.com 域上创建了一个 AngularJS 应用程序,并在 y.com 上创建了一个 RestAPI,您应该在。在 y.com 而不是 x.com 的根文件夹中的 htaccess 文件:)

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

正如 Lukas 提到的,如果使用 Apache,请确保启用了 mod _ headers

其他的答案对我不起作用,这就是最后对 apache2起作用的东西:

1)启用标题模式:

sudo a2enmod headers

2)创建 /etc/apache2/mods-enabled/headers.conf文件并插入:

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

3)重新启动服务器:

sudo service apache2 restart

确保没有重定向。如果 URL 中没有包含尾部斜杠,就会出现这种情况。

有关更多细节,请参见此答案 -https://stackoverflow.com/a/27872891/614524

如果您的主机不在 pvn 或专用,则很难重新启动服务器。

从我的更好的解决方案,只是编辑您的 CSS 文件(在另一个域或您的子域) ,调用字体 eot,woff 等到您的原产地(您的域或 www 你的域)。它会解决你的问题。

我的意思是,编辑 CSS 上的相对网址到绝对网址起源域