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