2015-11-23 2 views
7

По сути, у меня есть пользовательская HTML-диаграмма, которая требует значения с внешнего защищенного прокси-сервера. Прямо сейчас я вставляю HTML-блоки в соответствующие области на странице, содержащие JavaScript, чтобы получить правильные данные с помощью запроса XHTTP GET.Защищенный Javascript GET-запрос

Он прекрасно работает, пока мы не ограничим доступ к нашему прокси-серверу ограниченным нашим SSL с нашего сайта C5 (и это то, что мы хотим).

Это предотвращает получение правильного значения диаграммы, поскольку 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() { 
    .... 
} 
+0

Не можете ли вы отскочить запрос на своем сервере, по существу используя его в качестве прокси? –

+1

Добро пожаловать в SO @sethmrtn. Я отредактировал ваш вопрос, чтобы полностью удовлетворить требования SO (мы не говорим привет в вопросах, и мы стараемся сделать их повторно используемыми) на будущее. –

+0

Что такое сайт C5 и почему вы не можете отправить ему запрос GET? это не реализация CORS? что такое блокпост? –

ответ

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