htaccess Access-Control-Allow-Origin
Я создаю скрипт, который загружается извне на других сайтах. Он загружает 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 *
но это все равно не сработает.
8 ответов:
попробуйте это в .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 и просто добавить
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
добавить
.htaccessфайл со следующими директивами в папку шрифтов, если есть проблемы с доступом к шрифтам. Может быть легко изменен для использования с .css или .js файлы.<FilesMatch "\.(eot|ttf|otf|woff)"> Header set Access-Control-Allow-Origin "*" </FilesMatch>
в 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]и он начинает работать
другие ответы не работает для меня, это то, что в конечном итоге делает трюк для apache2:
1) Включить заголовки мод:
sudo a2enmod headers2) создать
/etc/apache2/mods-enabled/headers.confфайл и вставить:<IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>3) перезагрузите сервер:
sudo service apache2 restart
кстати: the .конфигурация htaccess должна быть выполнена на сервере, на котором размещен API. Например, вы создаете приложение AngularJS на x.com домен и создать REST API на y.com, вы должны установить Access-Control-Allow-Origin "*" в поле .файл htaccess в корневой папке y.com нет x.com :)
<IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule>также, как упоминал Лукас, убедитесь, что вы включили mod_headers, если вы используете Apache
убедитесь, что у вас нет редиректа происходит. Это может произойти, если вы не включаете конечную косую черту в URL.
смотрите этот ответ для более подробной информации -https://stackoverflow.com/a/27872891/614524
Comments