2012-03-07 30 views
11

मुझे एचटीटीपीएस साइट से HTTP साइट पर JSONP अनुरोध भेजने में समस्याएं आ रही हैं।एचटीटीपीएस HTTP JSONP अनुरोध

मेरे पास https (वैध प्रमाणपत्र के साथ) पर एक (गैर स्थानीय) परीक्षण वातावरण है जहां मैं इन सभी क्रॉस साइट/"क्रॉस प्रोटोकॉल" अनुरोधों को सफलतापूर्वक चलाने में सक्षम हूं (चेतावनियों के साथ, लेकिन त्रुटियों के बिना)।

गूगल क्रोम Javascript कंसोल आउटपुट:

The page at https://my.test.environment/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704 

हालांकि, उत्पादन में, (गूगल एप इंजन, appspot उप डोमेन पर) गूगल क्रोम उपयोगकर्ता की पुष्टि के लिए इंतज़ार कर रहे सभी अनुरोधों को ब्लॉक कर रहा है।

गूगल क्रोम Javascript कंसोल आउटपुट ([अवरुद्ध] पाठ के लिए विशेष ध्यान):

[blocked] The page at https://production.appspot.com/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704 

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

मैंने बिना किसी सफलता के हेडर की जांच करने की कोशिश की।

टेस्ट पर्यावरण हेडर:

Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Language:es 
Content-Length:2524 
Content-Type:text/html;charset=utf-8 
Date:Wed, 07 Mar 2012 15:48:30 GMT 
Keep-Alive:timeout=15, max=100 
Set-Cookie: cookie_info... 
Vary:Accept-Encoding 

APPSpot हेडर:

access-control-allow-credentials:false 
access-control-allow-origin:* 
cache-control:no-cache, must-revalidate 
content-encoding:gzip 
content-length:47890 
content-type:text/html; charset=utf-8 
date:Wed, 07 Mar 2012 14:52:02 GMT 
expires:Fri, 01 Jan 1990 00:00:00 GMT 
pragma:no-cache 
server:Google Frontend 
set-cookie: coookie_info.... 
status:200 OK 
vary:Accept-Encoding 
version:HTTP/1.1 

मैं पता नहीं क्यों इस परीक्षण envinroment पर काम कर रहा है और एक ही दृष्टिकोण गूगल क्रोम से APPSpot पर अवरुद्ध है की है।

किसी भी विचार?

+4

क्रोम गूगल HTTPS पृष्ठों अक्सर की तुलना में अलग मानक HTTPS पृष्ठों (जैसे विशेष प्रमाण पत्र चेक) व्यवहार करता है। यह असुरक्षित सामग्री के मामले भी हो सकता है? – Robert

+0

माइट आप सही हैं। वास्तव में, समस्या तब होती है जब हमने GAE पर ऐप को तैनात किया (ऐपस्पॉट Google के प्रमाणपत्र का उपयोग करता है)। मैं इसमें खोदूँगा। धन्यवाद! –

+0

मेरे पास अपने सर्वर और (वैध) प्रमाणपत्र पर एक ही समस्या है ... – Stefano

उत्तर

1

एक अपाचे प्रॉक्सी आपकी तरफ से एंडपॉइंट का अनुरोध करेगी। आप एक सेवा (जेसन, एक्सएमएल, छवियों, पोस्ट, पुट, डिलीट इत्यादि) के लिए गैर-जेसनपी अनुरोध भी कर सकते हैं क्योंकि ब्राउज़र सोचता है कि यह एक ही डोमेन के लिए अनुरोध कर रहा है।

आपका non.secure.site vhost फ़ाइल की तरह

ProxyRequests Off 
ProxyPreserveHost On 
<Proxy *> 
    Allow from all 
</Proxy> 
ProxyPass /appspot https://production.appspot.com/ 
ProxyPassReverse /appspot https://production.appspot.com/ 

कुछ होते हैं एक बार जब आप इसे सेट अप तुम सिर्फ सेवा फोन ...

http://non.secure.site/appspot/service?jsonCallback=jsonp1331132928704 
अधिक जानकारी

के लिए

गूगल proxypass

https://serverfault.com/questions/429404/help-me-understand-how-to-use-proxypass

0

यदि आपके पास कोई अन्य विकल्प नहीं है लेकिन हम जो तृतीय पक्ष एपीआई सुरक्षित नहीं है आप एमआईटीएम के बारे में सोच सकते हैं कि एपीआई स्वयं।

एक सर्वर साइड स्क्रिप्ट बनाएं जिसे केवल SSL के माध्यम से एक्सेस किया जाएगा और आपके टैग और एपीआई के बीच प्रॉक्सी या फॉरवर्डर के रूप में कार्य करेगा। इस तरह आप डेटा पर अपने स्वयं के चेक और सत्यापन करके सुरक्षा बढ़ा सकते हैं, और क्योंकि आप इसे एसएसएल के तहत सेवा देंगे, आपको कोई भी "मिश्रित सामग्री" त्रुटियां नहीं मिलेंगी।

बीटीडब्ल्यू, मैंने इसका परीक्षण नहीं किया है हमेशा यह मौका है कि जीएई से Google प्रमाण पत्र के तहत साइटें अलग-अलग कार्य करेंगी।

आशा मैं मदद कर सकता है।

0

मैं http और https के बीच एक ही काम करना के लिए एक ही मुद्दा मिल गया। यह एक क्रॉस डोमेन मुद्दा है।

सबसे महत्वपूर्ण चीज़ जो आपको चाहिए वह है कि आप जिस सर्वर साइड पेज का उपयोग कर रहे हैं वह कर्ल करने के लिए उपयोग कर रहा है, उसे http से https कनेक्शन की अनुमति देने के लिए कुछ शीर्षलेख सेट करना होगा। यह नीचे दिए गए हैं ....

header("Access-Control-Allow-Origin: your https url"); 
header("Access-Control-Allow-Methods: POST, GET"); 
header("Access-Control-Max-Age: 1728000"); 

header("Access-Control-Allow-Headers: Content-Type, Connection, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"); 
header("Connection: close"); 
संबंधित मुद्दे