htaccess访问控制允许来源

我正在创build一个脚本,在其他网站上进行外部加载。 它加载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 * 

但它仍然不起作用。

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

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

如果它只涉及.js脚本,你应该把上面的代码包装在这里面:

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

没有人说你还必须启用mod_headers ,所以如果仍然不能正常工作,试试这个:

(下面的技巧在Ubuntu上工作,不知道其他发行版)

你可以检查加载模块列表

 apache2ctl -M 

启用你可以使用的mod_headers

 a2enmod headers 

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

 /etc/init.d/apache2 restart 

那么你可以使用

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

而如果mod_headers不活跃,这条线就什么也不做。 您可以尝试跳过if子句,只需在您的configuration中添加Header set Access-Control-Allow-Origin "*" ,那么如果mod_headers未处于活动状态,则应在启动期间抛出错误。

从我的经验

如果它不能在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请求参数

在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] 

 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> 

其他的答案没有为我工作,这是结束了做apache2的技巧:

1)启用标题mod:

sudo a2enmod headers

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

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

3)重新启动您的服务器:

sudo service apache2 restart

BTW:.htaccessconfiguration必须在托pipeAPI的服务器上完成,而不是在客户端上。 例如,您在x.com域上创build一个AngularJS应用程序,并在y.com上创build一个Rest API,则应该在y.com根文件夹的.htaccess文件中设置Access-Control-Allow-Origin“*”,而不是x .com 🙂

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

同样如Lukas提到的,如果你使用Apache,确保你已经启用了mod_headers

确保你没有发生redirect。 如果您不在URL中包含结尾的斜杠,就会发生这种情况。

看到这个答案更详细 – https://stackoverflow.com/a/27872891/614524