.htaccess htaccess访问控制允许源

.htaccess htaccess访问控制允许源,.htaccess,cors,cross-domain,.htaccess,Cors,Cross Domain,我正在创建一个脚本,可以在其他站点上进行外部加载。它加载CSS和HTML,在我自己的服务器上运行良好 但是,当我在另一个网站上尝试时,它会显示以下可怕的错误: Access-Control-Allow-Origin 在这里,您可以看到它装载得非常完美: 但在另一个网站上,它显示了错误: 我将加载脚本上载到JSFIDLE: 我试着像这样编辑htaccess文件: <IfModule mod_headers.c> Header set Access-Control-

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

但是,当我在另一个网站上尝试时,它会显示以下可怕的错误:

Access-Control-Allow-Origin
在这里,您可以看到它装载得非常完美:

但在另一个网站上,它显示了错误:

我将加载脚本上载到JSFIDLE:

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

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

但它仍然不起作用。

在外部根文件夹的.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>

标题集访问控制允许原点http://www.vknyvz.com  
标头集访问控制允许凭据为true
  • 凭据可以是true,也可以是false,具体取决于ajax请求参数

没有人说您还必须启用mod_头,因此如果仍然无法工作,请尝试以下方法:

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

您可以使用查看已加载模块的列表

apache2ctl -M
要启用mod_头,可以使用

a2enmod headers
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>
当然,在Apache中进行任何更改后,您必须重新启动它:

/etc/init.d/apache2 restart
然后你可以用

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

标题集访问控制允许原点“*”

如果mod_headers未处于活动状态,则此行将完全不起作用。您可以尝试跳过if子句,只需在您的配置中添加
头集访问控制允许源“*”
,然后如果mod_头未激活,则在启动过程中会抛出错误。

在Zend Framework 2.0中,我遇到了这个问题。可以通过两种方式解决。htaccess或php标头我更喜欢.htaccess,因此我修改了.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]

重新编写引擎打开
标题集访问控制允许原点“*”
RewriteCond%{REQUEST_FILENAME}-s[或]
RewriteCond%{REQUEST_FILENAME}-l[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^.*$-[NC,L]
重写规则^.*$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上创建Rest API,您应该在y.com而不是x.com的根文件夹上的.htaccess文件中设置Access Control Allow Origin“*”)


标题集访问控制允许原点“*”

正如Lukas提到的,如果使用Apache,请确保启用了mod_头。其他答案对我不起作用,这就是apache2的诀窍:

1) 启用标题模块:

sudo a2enmod头文件

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

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

标题集访问控制允许原点“*”
3) 重新启动服务器:


sudo服务apache2重启

确保没有发生重定向。如果URL中不包含尾随斜杠,则可能发生这种情况


有关详细信息,请参阅此答案—

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

从我这里得到更好的解决方案,只需编辑你的CSS文件(在另一个域或你的子域),将字体eot、woff等调用到你的源(你的域或www-yourdomain)。它会解决你的问题



我的意思是,在css上编辑相对url到绝对url源域

这对我来说不起作用,但我能够在php中工作,这是同样的原理。这节省了我的时间,php无法工作,所以htaccess做到了。关于使用
filematch
的好建议。如果我们通过添加filematch块来匹配文件,那么,
*
做什么呢?完成后我需要重新启动服务器吗?我应用了上面的代码,但它仍然不允许我访问\.json,我将
js
更改为
json
@shenkwen
*
允许任何源域访问此资源。这不是一个资源列表,而是一个引用域的列表。如果它不起作用,你应该尝试启用
headers
模块:
a2enmod headers
一直在尝试我在谷歌上能找到的所有选项,正如你所说,没有人提到mod_headers。感谢我的mod_头处于活动状态,并在.htaccess(与前面提到的位置相同)中添加了这一行,但仍然收到此错误:飞行前的响应具有无效的HTTP状态代码400..请建议!mod_头是丢失的东西!这与.htaccess规则完美配合。谢谢。@SachinS没有找到400错误,500是服务器错误。从这里开始。应该注意,如果如上所述,您的
.htaccess
文件位于字体目录中,并且字体目录仅包含
.eot
,。
ttf
,则上述
指令是不必要的,
.otf
和/或
.woff
文件。这是在我的Ubuntu 16.10服务器上对我有效的唯一解决方案。这也对我有效。我使用的是Ubuntu 16.04服务器。谢谢。在Ubuntu 18.04上为我工作。Firefox 70.0.1对Access Control Allow Origin头文件不满意,我还必须添加Access Control Allow方法。@Songolo我在Centos 7中找不到apache的此文件。我查看了/etc/httpd目录中的所有地方。你能告诉我如何在Centos上实现吗?嗨!如果.htaccess答案不适用于您,但此答案适用,那么您可能必须通过在服务器配置文件(/etc/apache2/apache2.conf)中设置
AllowOverride All
来启用.htaccess