Htaccess Access-Control-Allow-Origin
Я создаю script, который загружается извне на другие сайты. Он загружает CSS и HTML и отлично работает на моих собственных серверах.
Однако, когда я пытаюсь использовать его на другом веб-сайте, он отображает эту ужасную ошибку:
Access-Control-Allow-Origin
Здесь вы можете видеть, что он отлично загружается: http://tzook.info/bot/
Но на этом другом сайте отображается ошибка:
http://cantloseweight.co/robot/
Я загрузил загрузку script в jsfiddle:
http://jsfiddle.net/TL5LK/
Я попытался отредактировать файл htaccess следующим образом:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
</IfModule>
Или вот так:
Header set Access-Control-Allow-Origin *
Но это все еще не работает.
Ответы
Ответ 1
Попробуйте это в .htaccess внешней корневой папки:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
И если это касается только сценариев .js, вы должны обернуть код выше:
<FilesMatch "\.(js)$">
...
</FilesMatch>
Ответ 2
никто не говорит, что вы также должны иметь 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 не активен.
Ответ 3
из моего опыта;
если он не работает из 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
Ответ 4
Добавьте файл .htaccess
со следующими директивами в папку со шрифтами, если у вас есть проблемы с доступом к вашим шрифтам. Может быть легко изменено для использования с файлами .css или .js.
<FilesMatch "\.(eot|ttf|otf|woff)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
Ответ 5
В Zend Framework 2.0 у меня была эта проблема. Может быть решена двумя способами .htaccess или php header я предпочитаю .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]
to
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]
и он начинает работать
Ответ 6
Другие ответы не сработали для меня, вот что закончилось тем, что сделал трюк для 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
Ответ 7
Кстати: конфигурация .htaccess должна выполняться на сервере, на котором размещен API. Например, вы создаете приложение AngularJS в домене x.com и создаете 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
Ответ 8
Убедитесь, что у вас нет перенаправления. Это может произойти, если в URL-адрес не указывается конечная косая черта.
Подробнее см. этот ответ - fooobar.com/questions/77396/...
Ответ 9
Если ваш хост не находится в режиме pvn или выделен, перезапустить сервер сложно.
Лучшее решение от меня, просто отредактируйте свой CSS файл (в другом домене или вашем поддомене), который вызывает шрифт eot, woff и т.д. К вашему происхождению (your-domain или www yourdomain). это решит вашу проблему.
Я имею в виду, изменить относительный URL на CSS для абсолютного домена источника URL