2013-04-11 24 views
8

में $ http अनुरोध के साथ अस्वीकार कर दिया गया है, मैं अपने कोणीय ऐप को $ http.get अनुरोध करने की कोशिश कर रहा हूं। हर जगह काम करता है लेकिन आईई 8। मैं नवीनतम कोणीय का उपयोग कर रहा हूं (1.0.6 मुझे लगता है)। आईई देने वाला एकमात्र संदेश है: TypeError:एक्सेस एंगुलर और आईई 8

एक्सेस अस्वीकार कर दी गई है। अपरिभाषित (पिछले कोणीय में यह था)

मेरे मेजबान (NodeJS) CORS हेडर भेजने के लिए सेट है:

res.header('Access-Control-Allow-Origin', '*'); //config.allowedDomains 
res.header('Access-Control-Allow-Credentials', true); 
res.header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, X-Requested-By'); 
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 

मैं डिबग उपकरण का उपयोग कर त्रुटि के बारे में अधिक जानकारी प्राप्त करने की कोशिश की है, लेकिन:

फिडलर: xmlhttprequests नहीं दिखाता है - ऐसा लगता है कि आप इसे ठीक करने के लिए अपने नेट ऐप को हैक कर सकते हैं लेकिन यह सुनिश्चित नहीं है कि मेरे वेब पेज के साथ क्या करना है। DebugBar: इन अनुरोधों को प्रदर्शित नहीं करता है या तो FirebugLite: 2 संस्करण मैं टूट रहे हैं की कोशिश की है - बस यादृच्छिक त्रुटियों और

एक ही मूल करने के लिए मेजबान बदलने लोड नहीं करता है इस मुद्दे को साफ करता है तो मैं यह है कि यह कुछ लेकिन आदमी कोशिश कर रहा है मान डीबग करना मुश्किल है।

इस पर कोणीय पोस्ट पुराने लगते हैं और मुझे यकीन नहीं है कि यहां से क्या करना है।

+1

फ़िडलर पूरी तरह से IE के लिए एक्सएचआर दिखाने करता है:

के रूप में आवश्यक है, वहाँ GitHub आधिकारिक AngualrJS वेबसाइट के लिए एक कड़ी है। अगर ऐसा नहीं होता है, तो यह एक बड़ी निगरानी होगी। http: // stackoverflow।कॉम/प्रश्न/7351238/कैन-फिडलर-टू-शो-इंटरनेट-एक्सप्लोरर-एक्सएचआर-ट्रैफिक – Alan

+0

सटीक होने के लिए, आईई 8 और आईई 9 में एक्सएचआर नहीं है, बल्कि इसके बजाय XDomainRequest, या XDR करते हैं। – Alan

+0

वैसे मैंने उस फिडलर पोस्ट को पढ़ा है और सेटिंग की जांच की है और मेरे जीवन के लिए मैं इनमें से कोई भी अनुरोध नहीं देख सकता हूं। अन्य पदों से संकेत मिलता है कि इन्हें चुनने के लिए फिडलर के लिए प्रॉक्सी सेट की जानी चाहिए। और मैं IE8 XHR - XDomainRequest से अवगत हूं - मैं इस पर वर्तमान कोणीय दस्तावेज़ों को निधि प्रतीत नहीं कर सकता। कुछ पुरानी पोस्टों से संकेत मिलता है कि XDomainRequests के लिए कोई समर्थन नहीं है लेकिन यह सुनिश्चित नहीं है कि वर्तमान स्थिति क्या है - मुझे यह विश्वास करना मुश्किल लगता है कि IE8 एंगुलर $ http – cyberwombat

उत्तर

7

इसका $ http से कोई लेना देना नहीं है। $ http आपको एक्सएचआर (एक्सडीआर) या जेएसओएनपी अनुरोध करने देता है। यह ब्राउज़रों को समान मूल नीति को बाधित करने के लिए एक तंत्र प्रदान नहीं करता है।

Changing the hosts to same origin clears the issue so I assume it's trying something but man it's hard to debug.

यह आपकी समस्या की कुंजी है। आईई 8 क्रॉस-ओरिजिन-रिसोर्स-शेयरिंग (सीओआरएस) का बहुत अच्छा समर्थन नहीं करता है। आदेश क्रॉस डोमेन बनाने के लिए, IE8 के साथ कहता है तो आप बेहतर बंद या तो:

  1. अपने NodeJS एप्लिकेशन प्रॉक्सी के लिए अनुरोध आप के लिए है, जिससे आप ही डोमेन का उपयोग का उपयोग करें।
  2. अपने $ http.get() अनुरोध में JSONP उपयोग

CORS और IE8, जो outlined here हैं के साथ जुड़े gotchas के एक संख्या हैं।

+1

जैसा लगता है कि मैं XDomainRequest का उपयोग कर सकता हूं - किसी ने इसके लिए समर्थन के साथ कोणीय का कांटा बनाया लेकिन अब पुराना है। – cyberwombat

+0

मैं XDomainRequest का उपयोग करने के खिलाफ अनुशंसा करता हूं। कोणीय लोगों के पास एक अच्छा कारण था कि उन्होंने इस सुविधा को मर्ज क्यों नहीं किया, यह एक अच्छा समाधान नहीं है। यदि आपके मामले में संभव हो, तो मैं नोडजेस का उपयोग करके या नोड ऐप के सामने mod_proxy के साथ अपाचे जोड़कर अनुरोध को प्रॉक्सी कर दूंगा। – OlliM

+0

ओलीआईएम सही है, एक्सडीआर बेकार है। डिफ़ॉल्ट रूप से, expressjs का फॉर्म पार्सर पोस्ट किए गए डेटा को पार्स नहीं कर सकता है, क्योंकि XDR केवल टेक्स्ट/सादा सामग्री-प्रकार का समर्थन करता है। कोई कस्टम हेडर समर्थन नहीं, कोई प्रीफलाइट अनुरोध, आदि – Alan

3

मैं इस एक ही मुद्दे में चल रहा था, और यह संभावना आदर्श नहीं है, जबकि, एक ही समाधान को सुरक्षा सेटिंग 'डोमेन के बीच पहुँच डेटा स्रोतों' IE के बदलने के लिए सक्षम या शीघ्र है:

http://technet.microsoft.com/en-us/library/dd346862.aspx

मेरे मामले में मैं किसी अन्य डोमेन पर होस्ट किए गए अपने स्वयं के एपीआई से डेटा लाने (कोणीय के संसाधन के माध्यम से) लाने की कोशिश करते समय एक ही चीज़ में भाग रहा था। IE8 & IE9 में ये अनुरोध ऊपर वर्णित त्रुटि के साथ विफल हो जाएंगे। क्रॉस-डोमेन डेटा अनुरोधों को उस समस्या को हल करने के लिए IE में सुरक्षा सेटिंग को बदलना।

1

कोणीयजेएस आईई < = 9 कोर का समर्थन नहीं करता है।

AngularJS Github official discussion

+0

क्यों -1 कृपया इसे कहें? – Ant

+3

कृपया अपने दावे का समर्थन करने वाला एक लिंक प्रदान करें। तो मैं अपने -1 – schmidlop

+2

@schmidlop पूर्ण कर दूंगा। व्याख्या करने के लिए धन्यवाद – Ant