2015-11-23 7 views
7

अनिवार्य रूप से, मेरे पास एक कस्टम HTML चार्ट है जिसके लिए बाहरी सुरक्षित प्रॉक्सी सर्वर से मूल्य की आवश्यकता है। अभी, मैं उस पृष्ठ पर प्रासंगिक क्षेत्रों में HTML ब्लॉक डाल रहा हूं जिसमें XHTTP GET अनुरोध के माध्यम से सही डेटा प्राप्त करने के लिए जावास्क्रिप्ट शामिल है।सुरक्षित जावास्क्रिप्ट अनुरोध प्राप्त करें

यह आश्चर्यजनक रूप से काम करता है जब तक कि हम अपने सीओएल साइट से हमारे एसएसएल तक सीमित नहीं होने तक हमारे प्रॉक्सी सर्वर तक पहुंच प्रतिबंधित करते हैं (जो हम चाहते हैं)।

यह चार्ट को सही मान प्राप्त करने से रोकता है क्योंकि HTML और जावास्क्रिप्ट को क्लाइंट पक्ष पर निष्पादित किया जाता है और सी 5 के माध्यम से नहीं।

अनिवार्य रूप से, मुझे क्या करना है (मुझे लगता है) जी 5 के अंदर जीईटी अनुरोध को स्थानांतरित करना है ताकि वह एसएसएल प्रमाणपत्र से गुजर सके। तब मुझे उस मूल्य को लेने और चार्ट में वापस प्लग करने की आवश्यकता है।

नीचे कुछ छद्म कोड है जो 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 में आपका स्वागत है। मैंने भविष्य के लिए एसओ की आवश्यकताओं को पूरा करने के लिए अपना प्रश्न संपादित किया है (हम प्रश्नों में हैलो नहीं कहते हैं, और हम उन्हें फिर से उपयोग करने की कोशिश करते हैं)। –

+0

सी 5 साइट क्या है, और आप इसे एक GET अनुरोध क्यों नहीं भेज सकते हैं? क्या यह सीओआरएस लागू नहीं कर रहा है? रोडब्लॉक क्या है? –

उत्तर

0

आप किसी अन्य डोमेन या प्रोटोकॉल बस बैकएंड तक पहुंचना चाहते हैं में CORS को सक्षम करने के लिए एक Ajax अनुरोध कर सकता है।

एक और विकल्प लेकिन मुझे नहीं पता कि यह सी 5 में उपलब्ध है या नहीं, यह प्रॉक्सी पास अनुरोध बनाना है। इस मामले में सी 5 आपके अनुरोध के साथ प्रॉक्सी के रूप में करेगा। तब प्रवाह है:

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

संबंधित मुद्दे