2017-02-20 11 views
0

Я пытаюсь отобразить панель инструментов Grafana на простой странице PHP. Я следил за инструкциями веб-сайта, чтобы выполнить аутентификацию с помощью oauth. Вот мой код:Изменить заголовки Grafana (Access-Control-Allow-Origin)

<?php 
$ch = curl_init(); 
$authorization = "Authorization: Bearer <myToken>"; 
curl_setopt_array(
    $ch, array( 
    CURLOPT_URL => 'url-to-my-dashboard', 
    CURLOPT_HTTPHEADER => array('Content-Type: application/json' , $authorization), 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTPAUTH => "HTTP/1.1" 
)); 

$output = curl_exec($ch); 
?> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <?php echo $output; ?> 
    </body> 
</html> 

Страница загружается, я получаю CSS ... но в итоге я получаю ошибку 404. Я обнаружил, что заголовки графана не позволяют такого рода действия:

Access to Font at 'http://xxxxx' from origin 'http://localhost' 
has been blocked by CORS policy: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost' is therefore not allowed access. 

Я совершенно уверен, что мне нужно настроить эти заголовки:

Header set Access-Control-Allow-Origin "xxx" 
Header set Access-Control-Allow-Methods "GET, OPTIONS" 
Header set Access-Control-Allow-Headers "origin, authorization, accept" 

Проблема я не знаю, где я буду сделай это. Я искал файл .htaccess для Grafana (или Graphite, который мы используем с ним). Я также попытался изменить файл conf apache2 (/ etc/apache2/apache2/conf); после перезапуска ничего не меняется ...

Я совсем застрял. Может кто-нибудь мне помочь?

+0

Вы были в состоянии решить проблему? через @JMeterDude –

ответ

1

Это браузер, который блокирует запросы, а не Grafana из-за запросов, нарушающих Same Origin Policy. Для localhost два веб-сайта, работающих на разных портах, считаются двумя разными доменами.

Вам нужно будет поставить сервер Grafana за обратный прокси, чтобы разрешить совместное использование ресурсов Cross Origin (CORS).

Существует проблема, описывающая это со ссылкой на документы.

Выписка из документации (ссылка выше), описывающий Apache конфигурации:

Для Apache 2.x:

Header set Access-Control-Allow-Origin "*" 
Header set Access-Control-Allow-Methods "GET, OPTIONS" 
Header set Access-Control-Allow-Headers "origin, authorization, accept" 

Нет те, что с помощью «» оставляют свой экземпляр графитового достаточно открыты, чтобы вы могли бы рассмотреть вопрос об использовании «http://my.grafana.com» вместо «»

Если ваш веб-Графит proteced по базовой аутентификации, вы должны включить HTTP глагольные варианты. Обратите внимание, что при использовании базового auth Access-Control-Allow-Origin не должно быть установлено подстановочный знак, также должен быть указан заголовок Access-Control-Allow-Credentials. Это выглядит как следующий за Apache:

Header set Access-Control-Allow-Origin "http://mygrafana.com:5656" 
Header set Access-Control-Allow-Methods "GET, OPTIONS" 
Header set Access-Control-Allow-Headers "origin, authorization, accept" 
Header set Access-Control-Allow-Credentials true 

<Location /> 
    AuthName "graphs restricted" 
    AuthType Basic 
    AuthUserFile /etc/apache2/htpasswd 
    <LimitExcept OPTIONS> 
     require valid-user 
    </LimitExcept> 
</Location> 

А вот вопрос, который описывает конфигурации для создания обратного прокси-сервера для графана с Apache:

https://github.com/grafana/grafana/issues/4136

Если эти ссылки делают не помогло, в речах Grafana есть много закрытых вопросов об этом.Вот поиск CORS и апача:

https://github.com/grafana/grafana/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aclosed%20cors%20apache

+0

Спасибо, я попробую это, и я скажу вам –

Смежные вопросы