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