Page 1 of 1

[SOLVED] CORS или Access-Control-Allow-Origin

Posted: Thu Jul 23, 2015 1:11 pm
by sonyblack
Не получается пускать шрифты через CDN, куда уже только не писал Access-Control-Allow-Origin *

Пользуюсь инструкцией: http://docs.skyparkcdn.ru/knowledge_base/item/43253

пишу в файл:
/etc/nginx/conf.d/185.5.251.***.conf

в .htaccess в корне сайта тоже писал, не работает

Debian 7, чистая установка VestaCP, что я делаю не так?

Re: CORS или Access-Control-Allow-Origin или загрузка шрифто

Posted: Thu Jul 23, 2015 1:22 pm
by skurudo
что я делаю не так?
Подключается команда знатоков-телепатов! :)

Давайте по порядку из статьи:
Конфигурация Apache
* Добавьте в файл .htaccess -- это в папку с вашим сайтом

Конфигурация Nginx
* Добавьте в секцию server файл nginx.conf:
/home/user/conf/web/nginx.conf

.htaccess or Apache/Nginx config
ну здесь на выбор или htaccess или nginx.conf

А теперь проверка:
<code>$ curl -I https://</code>/cdn.example.ru<code>/media/fonts/somefont.ttf

Re: CORS или Access-Control-Allow-Origin или шрифты и CDN

Posted: Thu Jul 23, 2015 1:30 pm
by sonyblack
Я добавляю в .htaccess, ничего не происходит

В nginx.conf нельзя создать секцию server, при перезагрузке Nginx ругается, поэтому добавляю в конфиг ip

Чищу кэш cdn

Ответ всегда такой
curl -I http://cdn.***.**/template/css/fontawesome/fonts/fontawesome-webfont.ttf

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 23 Jul 2015 13:26:38 GMT
Content-Type: font/ttf
Content-Length: 122092
Connection: keep-alive
Last-Modified: Sat, 02 May 2015 06:41:37 GMT
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
X-Age: 3
X-Cache: HIT
X-Storage: 93.171.206.215:8001
Accept-Ranges: bytes
X-Edge-IP: 93.171.206.215
X-Edge-Location: Yekaterinburg, RU

Re: CORS или Access-Control-Allow-Origin или шрифты и CDN

Posted: Thu Jul 23, 2015 1:31 pm
by sonyblack
Посути вопрос в том, куда бы вписать «Access-Control-Allow-Origin *»
Чтоб давало фаерфоксам и хромам брать шрифты с других доменов.

даже при вставки в php не работает, где-то в настройках зарубается если я правильно понимаю

Re: CORS или Access-Control-Allow-Origin или шрифты и CDN

Posted: Thu Jul 23, 2015 2:03 pm
by skurudo
sonyblack wrote: В nginx.conf нельзя создать секцию server, при перезагрузке Nginx ругается, поэтому добавляю в конфиг ip
Ого, давайте вместо прочитаем:
Добавьте в секцию server файл nginx.conf:

Code: Select all

 location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
           add_header Access-Control-Allow-Origin "*";
}
При этом у вас этот файл вот тут - /home/user/conf/web/nginx.conf
user - ваш пользователь

Re: CORS или Access-Control-Allow-Origin или шрифты и CDN

Posted: Thu Jul 23, 2015 2:05 pm
by skurudo
sonyblack wrote:Посути вопрос в том, куда бы вписать «Access-Control-Allow-Origin *»
Чтоб давало фаерфоксам и хромам брать шрифты с других доменов. даже при вставки в php не работает, где-то в настройках зарубается если я правильно понимаю
Изначально - в apache2
но из-за связки nginx+apache2 - не только в него, о чем довольно подробно в статье.

Re: CORS или Access-Control-Allow-Origin или шрифты и CDN

Posted: Thu Jul 23, 2015 2:35 pm
by sonyblack
Все записи продублировал в apache2.conf и в nginx.conf в папке пользователя, очистил кэш в cdn, перезагрузил сервер, ответ все такой же

Re: CORS или Access-Control-Allow-Origin или шрифты и CDN

Posted: Thu Jul 23, 2015 3:05 pm
by sonyblack
Вообщем я победил эту штуку, надо добавить это:

location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
#
# Om nom nom cookies
#
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# Custom headers and headers various browsers *should* be OK with but aren't
#
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
#
# Tell client that this pre-flight info is valid for 20 days
#
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
}

Источник: http://enable-cors.org/server_nginx.html

Re: [SOLVED] CORS или Access-Control-Allow-Origin

Posted: Fri Jul 24, 2015 8:42 am
by skurudo
Ого, некислая такая инструкция.
Однако если вы посмотрите, что общий случай был и в первой статье.
Имею в виду:

Code: Select all

location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
           add_header Access-Control-Allow-Origin "*";