安全的Javascript GET请求

时间:2015-11-23 15:16:54

标签: javascript html ssl concrete5

基本上,我有一个自定义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() {
   ....
}

1 个答案:

答案 0 :(得分:0)

您可以向另一个域或协议发出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