我正在尝试在普通的PHP页面中显示Grafana仪表板。我按照网站上的说明用oauth进行身份验证。这是我的代码:
<?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错误。我发现Grafana的标题不允许这种行为:
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"
问题是我不知道我会在哪里做。我一直在寻找Grafana(或Graphite,我们用它)的.htaccess文件。我也尝试修改Apache2 conf文件(/ etc / apache2 / apache2 / conf);重新启动后,没有任何变化......
我很困惑。任何人都可以帮助我吗?
答案 0 :(得分:1)
由于请求违反Same Origin Policy,阻止请求的浏览器而不是Grafana。对于localhost,在不同端口上运行的两个网站被视为两个不同的域。
您需要将Grafana服务器放在反向代理后面以允许跨源资源共享(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"
请注意使用&#34; &#34;让你的石墨实例完全开放 可能想考虑使用&#34; http://my.grafana.com&#34;取代&#34; &#34;
如果您的Graphite网站受到基本身份验证的保护,您必须这样做 启用HTTP谓词OPTIONS。请注意,使用基本身份验证时 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为Grafana创建反向代理的配置的问题:
https://github.com/grafana/grafana/issues/4136
如果这些链接没有帮助,Grafana回购中有很多关于此的问题。这是搜索cors和apache:
https://github.com/grafana/grafana/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aclosed%20cors%20apache