2013-01-16 54 views
6

में लंबित स्थिति के साथ रद्द मैं Sencha टच 2.1.0 का उपयोग कर रहा हूँ। मैं एक HTTP जीईटी कॉल कर रहा हूँ। यह एक सीओआरएस अनुरोध है। इसलिए यह अपेक्षित के रूप में प्री-फ्लाइट HTTP विकल्प कमांड भेज रहा है।HTTP विकल्प पूर्व उड़ान अनुरोध लोड क्रोम

मैं अपने सर्वर पर CORS फिल्टर स्थापित और कॉन्फ़िगर कर। मेरे कोड से कॉल कल तक बहुत अच्छी तरह से चल रही थी। अचानक आज यह डेटा लोड करना बंद कर दिया। जब मैं नेटवर्क क्रोम में कॉल की जांच, मुझे लगता है कि विकल्प विधि

विधि "रद्द लोड" के रूप में दिखाई देता है: विकल्प
स्थिति पाठ: "लोड रद्द कर दिया"
प्रकार: लंबित
सर्जक: Connection.js : 319

मैं ने वही समस्या थी जब मैं पहली बार के लिए CORS फिल्टर कॉन्फ़िगर किया गया। जब मैंने ब्राउज़र कैश साफ़ किया, तो यह काम करना शुरू कर दिया। इस बार, मुझे यकीन नहीं है कि यह अचानक काम करना क्यों बंद कर दिया। जब मैं ब्राउज़र में कैश और इतिहास साफ़ करता हूं तब भी यह ठीक नहीं हो रहा है।

अगर मैं HTTPRequestor से एक ही सटीक कॉल फ़ायरफ़ॉक्स में यह बहुत अच्छी तरह से काम करता है। यहां कॉल है। गोपनीयता कारणों से मैंने यूआरएल मास्क किया है।

OPTIONS http://myurl/rest/items?_dc=1358304888220&page=1&start=0&limit=25 HTTP/1.1 
Access-Control-Request-Method: GET 
Origin: http://localhost:8080 
Access-Control-Request-Headers: accept, origin, x-requested-with 

वही सटीक अनुरोध मुझे HTTPRequestor से बहुत अच्छी प्रतिक्रिया देता है। यहाँ परिणाम है:

proxy: { 
     type: 'ajax', 
     method: 'GET', 
     url: 'http://myurl/rest/items', 
     withCredentials: true, 
     useDefaultXhrHeader: false, 
     disableCaching: false, 
     headers: { 
      "Accept": "application/json" 
     }, 
     failure: function(response) { 
      if (response.timedout) { 
       Ext.Msg.alert('Timeout', "The server timed out :("); 
      } else if (response.aborted) { 
       Ext.Msg.alert('Aborted', "Looks like you aborted the request"); 
      } else { 
       Ext.Msg.alert('Bad', "Something went wrong with your request"); 
      } 
     }, 
     success: function(response){ 
      Ext.Msg.alert(response.responseText); 
     } 
    }, 
    autoLoad: true, 

कृपया मेरी मदद समझ कैसे मैं इस समस्या को हल कर सकते हैं:

स्टोर में
OPTIONS http://myurl/rest/items?_dc=1358304888220&page=1&start=0&limit=25 
Access-Control-Request-Headers: accept, origin, x-requested-with 
Access-Control-Request-Method: GET 
Origin: http://localhost:8080 


-- response -- 
200 OK 
Date: Wed, 16 Jan 2013 03:19:27 GMT 

Server: Apache-Coyote/1.1 

Access-Control-Allow-Origin: http://localhost:8080 

Access-Control-Allow-Credentials: true 

Access-Control-Allow-Methods: HEAD, GET, POST, OPTIONS 

Access-Control-Allow-Headers: X-Requested-With, Origin, Accept, Content-Type 

Content-Length: 0 

Strict-Transport-Security: max-age=15768000, includeSubDomains 

Keep-Alive: timeout=15, max=100 

Connection: Keep-Alive 

Sencha कोड यह कॉल करने के।

+0

आप जावास्क्रिप्ट कोड आप अनुरोध करने के लिए उपयोग कर रहे हैं दिखा सकते हैं? क्या आप '.withCredentials = true सेट कर रहे हैं;'? – monsur

+0

@Monsur, मैं सिर्फ इतना है कि यह कॉल करने के लिए किया जाता है Sencha कोड गयी। हां के साथ प्रमाण पत्र सत्य है। यह कोड वास्तव में कल से पहले दिन तक काम कर रहा था और यह अचानक काम करना बंद कर दिया। मुझे यकीन नहीं है कि क्या गलत हुआ। मैंने सर्वर की तरफ कोई बदलाव नहीं किया। –

उत्तर

2

यह पिछले गूगल क्रोम अद्यतन की वजह से एक मुद्दा हो रहा है। जब मैं आयरन ब्राउज़र के साथ प्रयास करता हूं, तो यह काम करता है।

0

मैं वेबकिट ब्राउज़रों के बीटा संस्करण में एक ऐसी ही समस्या आ रहा था। यह पता चला है के रूप में, Content-Type हैडर Blobs युक्त XMLHttpRequests के लिए परोक्ष स्थापित किया जा रहा है, इसलिए मैं अपने सर्वर पर अपलोड Access-Control-Allow-Headers है कि जोड़ने के लिए किया था।

देखें: https://bugs.webkit.org/show_bug.cgi?id=99983

0

मैं सिर्फ इस समस्या का समाधान है। सर्वर प्रतिक्रिया शीर्षलेख को इस प्रकार सेट किया जाना चाहिए:

"Access-Control-Allow-Origin": "*" 
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept" 

आपने इसे पहले से ही किया है। मैं अगर GET या POST विधि शामिल एक्स-अनुरोधित-साथ शीर्ष, विकल्प विधि पहले भेजा जाएगा लगता है। एक्स-अनुरोधित-हेडर के साथ डिफ़ॉल्ट एक्सएचआर हेडर में है। इसलिए हम गलत पर 'useDefaultXhrHeader' स्थापित करना चाहिए। Ext.data.Store इस पैरामीटर का समर्थन नहीं किया था। एसडीके संपादित करें/src/डेटा/Connection.js, गलत पर useDefaultXhrHeader के परिवर्तन डिफ़ॉल्ट मान।