2009-07-16 21 views
7

यही वह है जो मैं करने की कोशिश कर रहा हूं।जावास्क्रिप्ट से क्लाइंट के 'लोकलहोस्ट' तक पहुंच

  1. मैंने जावास्क्रिप्ट कोड के साथ कुछ .html पेज बनाए हैं और उन्हें याहू सर्वर पर होस्ट किया है।

  2. अब जब कोई ब्राउज़र वाला कोई ग्राहक इन वेब पृष्ठों को देखता है, तो जावास्क्रिप्ट कोड कुछ डेटा पढ़ने के लिए h1ttp: // localhost: 8080/myservlet/servlet1 पर कनेक्शन बनाने के लिए XMLHTTPRequest का उपयोग करता है।

  3. मुझे पता है, मैं क्लाइंट के कंप्यूटर पर चल रहे वेब सर्वर से कनेक्ट करना चाहता हूं यदि क्लाइंट में एक है यानी मैं अपने xmlHTTPRequest में लोकलहोस्ट का उपयोग कर रहा हूं।

लेकिन यह भी काम नहीं कर रहा है जब एक ग्राहक एक वेब सर्वर पोर्ट 8080 पर चल रहा है ग्राहक के कंप्यूटर पर मैं http://localhost:8080/mysevlet/servlet1 उपयोग कर सकते हैं और सर्वलेट ठीक चल रहा है, लेकिन याहू सर्वर इसे पर होस्ट .html पेज के माध्यम से काम नहीं करता।

कोई भी चीज जो मैं गलत यहाँ कर रहा हूँ?

+3

यह काम नहीं करता है, क्योंकि यह नहीं होना चाहिए। – SilentGhost

+0

यह क्यों मतदान किया जाता है? मुझे एक वैध सवाल की तरह लगता है। – MattC

+0

भविष्य में, कृपया अधिक विशिष्ट प्रश्न शीर्षक के साथ पोस्ट करें। मैंने इसे आपके लिए संपादित किया है। –

उत्तर

2

इस एक क्रॉस-डोमेन समस्या नहीं है?

5

नीति प्रतिबंध ब्राउज़र आपको डोमेन डोमेन वेब पेज जो अपने मामले में याहू है की मेजबानी की तुलना में अलग करने के लिए XMLHttpRequest भेजने के लिए अनुमति नहीं देते के कारण।

6

Cross-site Scripting

आप उपयोग नहीं कर सकते हैं कि आपके डोमेन में नहीं है, जब तक यह एक वेब XML या JSONP

लौटने सेवा है
+2

जब मैं लोकलहोस्ट को http: // /sample.xml में बदलता हूं, तो मैं याहू पर होस्ट नहीं होने पर भी XML फ़ाइल को सही ढंग से पढ़ सकता हूं। तो मुझे लगता है कि यह एक क्रॉस स्क्रिप्ट समस्या नहीं है। – user139123

1

दूसरों के रूप में टिप्पणी की है, इस वजह से ब्राउज़र सुरक्षा मॉडल का काम नहीं करता।

आप अपने होस्ट फ़ाइल में प्रवेश के साथ इसे पाने में सक्षम हो सकते हैं।

पहले, अपने एप्लिकेशन संभालने एक yahoo.com डोमेन पर है, अपने मेजबान फ़ाइल खोलने के लिए और फिर इस

127.0.0.1 mylocalhost.yahoo.com 

की तरह एक प्रविष्टि जोड़ने, अपने पृष्ठों में http://mylocalhost.yahoo.com/myservlet/serverl1

करने के लिए अपने AJAX के अंत बिंदु बदल मैंने कभी इसका परीक्षण नहीं किया है, इसलिए मुझे यकीन नहीं है कि यह काम करेगा, लेकिन यह हो सकता है। यदि यह काम करता है, इस पेज के प्रत्येक उपयोगकर्ता उनके मेजबानों की तरह ऊपर

नोट फ़ाइल को संशोधित करने की आवश्यकता होगी: अपने मेजबान फ़ाइल खिड़कियों में C:\WINDOWS\system32\drivers\etc\hosts पर स्थित होना चाहिए, और * nix में /etc/hosts पर

+1

मुझे नहीं लगता कि यह काम करेगा। मेजबान को XMLHTTPRequest के लिए काम करने के लिए बिल्कुल वही होना चाहिए। Http; // www.example.com से लोड किए गए पृष्ठ http; // foo.example.com, http; // example.com:8080 या https; // example.com तक नहीं पहुंच सकते हैं। कुछ चाल हैं जो आप दस्तावेज़.डोमेन और आईफ्रेम के साथ खेल सकते हैं, लेकिन वे सुंदर नहीं हैं। –

0

स्थानीय मशीन को एक प्रॉक्सी सेट अप की भी आवश्यकता होती है जो आपके अजाक्स कोड के साथ याहू पृष्ठों पर "http://localhost:8080/whatever" मानचित्र करता है। कोड को काम करने के लिए, आपको डोमेन में उसी डोमेन का उपयोग करके ब्राउज़र में लोड करना होगा, जिस पर वह पहुंचने का प्रयास करता है।

मैं कैसे बिलाव (?) के साथ ऐसा करना यकीन नहीं है, लेकिन एक ही विकल्प प्रॉक्सी के लिए दोनों बिलाव सर्वर और एक ही स्थान में याहू पृष्ठों अपाचे उपयोग करने के लिए है।

अपाचे में, यह लगता है कि:

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
... 
<IfModule proxy_http_module> 
    ProxyRequests off 
    ProxyPass /static http://yahoo.com/path 
    ProxyPass /myservlet http://localhost:8080/myservlet 
</IfModule> 

फिर आप स्थानीय होस्ट/स्थिर से अपने HTML लोड होता है, और उन पृष्ठों स्थानीय होस्ट करने के लिए/myservlet AJAX अनुरोध करने के लिए सक्षम होगा।

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