2015-11-23 17 views
7

In sostanza, ho un grafico HTML personalizzato che richiede un valore da un server proxy sicuro esterno. In questo momento sto inserendo blocchi HTML nelle aree pertinenti della pagina che includono JavaScript per ottenere i dati corretti attraverso una richiesta XET GET XHTTP.Secure Javascript GET Request

Funziona meravigliosamente finché non limitiamo l'accesso al nostro server proxy per essere limitato al nostro SSL dal nostro sito C5 (che è anche quello che vogliamo).

Ciò impedisce al grafico di ottenere il valore corretto poiché HTML e JavaScript vengono eseguiti sul lato client e non tramite C5.

In sostanza, ciò che devo fare (penso) è spostare la richiesta GET all'interno di C5 in modo che possa passare con il certificato SSL. Quindi ho bisogno di prendere quel valore e ricollegarlo alla tabella.

Di seguito è riportato uno pseudo-codice basato sul codice HTML che sto attualmente inserendo nella pagina.

<!-- 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

Non puoi rimbalzare la richiesta sul tuo server, essenzialmente usandola come proxy? –

+1

Benvenuti in SO @sethmrtn. Ho modificato la tua domanda per soddisfare i requisiti di SO (non rispondiamo alle domande e cerchiamo di renderle riutilizzabili) per il futuro. –

+0

Che cos'è un sito C5 e perché non è possibile inviare una richiesta GET? non sta implementando CORS? qual è il posto di blocco? –

risposta

0

Si potrebbe fare una richiesta Ajax a un altro dominio o il protocollo semplicemente consentendo CORS nel backend che si desidera raggiungere.

Un'altra opzione, ma non so se questo è disponibile in C5 è quello di creare una richiesta di passaggio proxy. C5 in questo caso farà da proxy con la tua richiesta. Poi il flusso è:

Ajax request to your C5 -> C5 proxies the request to the external resource -> C5 sends you back the result

Io preferisco l'approccio di CORS ma tener conto che i browser precedenti non potevano essere compatibili al 100%. Vedi riferimento: http://caniuse.com/#feat=cors