本质上,我有一个自定义HTML图表,该图表需要来自外部安全代理服务器的值。现在,我正在将HTML块插入页面上包含JavaScript的相关区域中,以通过XHTTP GET请求获取正确的数据。
直到我们将来自C5站点(这也是我们想要的)的对代理服务器的访问限制为仅限SSL时,它的运行效果非常好。
这将阻止图表获得正确的值,因为HTML和JavaScript是在客户端而不是通过C5执行的。
本质上,我需要做的(我认为)是将GET请求移到C5内部,以便它可以与SSL证书一起通过。然后,我需要获取该值并将其重新插入图表。
以下是一些基于我当前放入页面的HTML代码的伪代码。
<!-- This is the actual HTML block that I'm creating. -->
<div id="HTMLBlock455" class="HTMLBlock">
<div class="someCustomChart">
<!-- Here's the script currently running that gets the necessary data and calls the proper functions to populate the chart. -->
<script type="text/javascript">
// Global Var to store updating value
var amount = 0;
// Open a new HTTP Request)
var xhr = new XMLHttpRequest();
xhr.open("GET", "Some_ElasticSearch Server", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var person = JSON.parse(xhr.responseText);
amount = person._source.age; // Grabs the person age
$('#chart_328').data('updateto', amount); //updates the above HTML data value
document.getElementById('chart_328_text').innerHTML = amount + '%';
} else {
console.error(xhr.statusText);
}
}
};
xhr.onerror = function (e) {
console.error(xhr.statusText);
};
xhr.send(null);
// This function executes on page load and prepares the chart!
$(document).ready(function() {
....
}
最佳答案
您可以向另一个域或协议(protocol)发出Ajax请求,只需在要访问的后端中启用 CORS
。
另一种选择,但我不知道C5中是否可用,是创建代理通过请求。在这种情况下,C5将作为您的请求的代理。那么流程是:Ajax request to your C5 -> C5 proxies the request to the external resource -> C5 sends you back the result
我更喜欢CORS
的方法,但考虑到旧版浏览器可能无法100%兼容。请参阅引用:http://caniuse.com/#feat=cors