2014-10-27 7 views
16

पर मैं वर्डप्रेस का उपयोग बैकएंड के रूप में और कोणीय के रूप में कोणीय के रूप में एक वेबसाइट बना रहा हूं। मैं अपने डेटा को फ्रंट-एंड पर लाने के लिए वर्डप्रेस जेसन एपीआई का उपयोग कर रहा हूं।कोणीय अनुरोध त्रुटि प्राप्त करें, लेकिन केवल सफारी आईओएस

https://wordpress.org/plugins/json-api/

समस्या

मैं wordpres json एपीआई से अपने डेटा प्राप्त करने के लिए कोणीय उपयोग कर रहा हूँ। मैं निम्न सेवा बनाया है:

this.getPage = function (slug) { 
    return $http.get('wordpress/api/get_page/?slug=' + slug) 
} 

मैं अपने नियंत्रक में इस सेवा का उपयोग वर्तमान पृष्ठ

HTTPService.getPage('home') 
    .success(function (data) { 
     $scope.page = data.page; 
     console.log(arguments); 
    }) 
    .error(function() { 
     console.log(arguments); 
    }) 

तो यह, सभी ब्राउज़रों में ठीक काम कर रहा है सफारी आईओएस के अलावा प्राप्त करने के लिए। अगर मैं त्रुटि तर्क लोग इन सफारी iOS पर मैं निम्नलिखित प्रतिक्रिया मिल:

Error response 0?

यह सफारी डिबगर है, मैं अपने मैकबुक के लिए मेरे iphone जुड़ा हुआ है। त्रुटि प्रतिक्रिया है कि मैं त्रुटि कोड 0 ..

क्या मैं अब तक

मैं `निर्धारित किया है पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति," * "htaccess फ़ाइल में लेकिन यह does not की कोशिश की है है काम करने लगते हैं। अनुरोध एक ही डोमेन पर एक सापेक्ष यूआरएल के साथ किया जाता है, इसलिए मुझे यह भी नहीं लगता कि यह समस्या है।

तो क्या कोई 1 जानता है कि यह सफारी (केवल आईओएस) पर क्यों काम नहीं कर रहा है?

अग्रिम धन्यवाद ...

संपादित

कुछ अतिरिक्त जानकारी के रूप में अनुरोध:

+0

त्रुटि सफारी आईओएस 7 और सफारी आईओएस 8 – koningdavid

+0

पर होती है, क्या आप अपना कोड jsfiddle पर पोस्ट कर सकते हैं? –

+0

वास्तव में त्रुटि तर्क प्रिंट कहां से है? क्या आप त्रुटि हैंडलर ('फ़ंक्शन (डेटा, स्थिति, शीर्षलेख, कॉन्फ़िगर)) के सभी तर्कों का प्रिंट पोस्ट कर सकते हैं?) या आपके कोड का अधिक? आपको [यह पुराना प्रश्न] (http://stackoverflow.com/questions/17035230/angular-js-breaks-in-safari-but-not-chrome) भी देखना चाहिए। – Absor

उत्तर

15

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

आप इसे आजमा सकते हैं, सफारी खोल सकते हैं, "वरीयताओं" पर जा सकते हैं और टैब के तहत "प्राइससी" जांच सकते हैं यदि आपके पास विकल्प है: "कुकीज़ और अन्य वेबसाइट डेटा ब्लॉक करें" को "तीसरे पक्ष और विज्ञापनदाताओं से" पर सेट करें। सफारी के आधुनिक संस्करणों में यह पहला और डिफ़ॉल्ट विकल्प है।

अपने मैकबुक में यह इस तरह दिखेगा:

enter image description here

और आईओएस में यह इस तरह दिखेगा:

enter image description here

बस पुष्टि करते हैं कि यह क्या पैदा वास्तव में आपकी समस्या: इस सेटिंग को "कभी नहीं" में बदलें, कैश साफ़ करें और उस समस्या को फिर से उत्पन्न करने का प्रयास करें। मुझे पूरा भरोसा है कि आप इसे पुन: पेश नहीं कर पाएंगे।

अब, आप इसे "कुकी अवरुद्ध और अन्य वेबसाइट डेटा: तीसरे पक्ष और विज्ञापनदाताओं से" के लिए वापस सेट करते हैं और आप पहली बार स्पष्ट कैश, तो आप उस समस्या फिर से होगा (या तो आईओएस या OSX के साथ)। आपके द्वारा पुष्टि की गई है कि यह आपकी समस्या का कारण है, इस सेटिंग को "तीसरे पक्ष और विज्ञापनदाताओं से" पर सेट करें, ताकि आप डिफ़ॉल्ट सेटिंग्स के साथ समस्या को पुन: उत्पन्न और संबोधित कर सकें।

ध्यान रखें कि हर बार जब आप इस मुद्दे का पुन: परीक्षण करना चाहते हैं तो आप सफारी के कैश को साफ़ करने से बेहतर होंगे। अन्यथा ऐसा हो सकता है कि सफारी निर्णय लेती है कि एपीआई की सेवा करने वाली साइट पर भरोसा किया जा सकता है और आप इस मुद्दे को पुन: पेश नहीं कर पाएंगे। तो, बस यह सुनिश्चित करने के लिए, प्रत्येक बार जब आप इसका परीक्षण करते हैं तो कैश साफ़ करें।

मेरा मानना ​​है कि इस समस्या की जड़ यह है कि सफारी यह सुनिश्चित करना चाहता है कि उपयोगकर्ता ने पृष्ठ के साथ सीधी बातचीत की है कि यह मुख्य पृष्ठ लोड करने से पहले "तृतीय पक्ष सामग्री" की सेवा कर रहा है।

मुझे "इष्टतम" समाधान का सुझाव देने के लिए आपके प्रोजेक्ट के बारे में और जानना होगा। उदाहरण के लिए: अंतिम ऐप को एपीआई के समान डोमेन के तहत एकीकृत किया जाएगा? क्योंकि यदि ऐसा है, तो जब आप उत्पादन में जाते हैं तो आपको उस समस्या का सामना नहीं करना चाहिए। मेरा मतलब है, यदि आप जिस ऐप को विकसित कर रहे हैं, उसके तहत होस्ट किया जाएगा: http://whatever.yourDomain.org और एपीआई उसी डोमेन (yourDomain.org) का हिस्सा बनने जा रहा है, तो आपको उस समस्या को बिल्कुल उत्पादन में नहीं होना चाहिए।

दूसरी तरफ, यदि आपको एक अलग डोमेन के तहत होस्ट किया गया एपीआई होना आवश्यक है, तो आपको सफारी "चाल" करने का एक तरीका खोजना होगा।

और यह:

मुझे आशा है कि इस मदद करता है इस पर एक नजर डालें।

+1

ओपी ने लिखा: * अनुरोध एक ही डोमेन पर एक सापेक्ष यूआरएल * के साथ किया जाता है, इसलिए तृतीय पक्ष कुकीज़ चाहिए यहाँ समस्याग्रस्त नहीं है। –

+2

आईओएस में सेटिंग बदलना और मेरे ब्राउज़र कैश को साफ़ करने से वास्तव में समस्या ठीक हो गई। अब मैं त्रुटि को पुन: उत्पन्न नहीं कर सकता। और हाँ एपीआई पहले से ही एक ही डोमेन पर है, लेकिन समस्या साइट पर समस्या आई, यही वह है जिसे मैं अभी भी समझ नहीं पा रहा हूं। – koningdavid

+1

धन्यवाद, समस्या का समाधान होने के बाद से मैं आपका जवाब स्वीकार करूंगा! हालांकि मैं अभी भी वास्तव में यह नहीं समझता कि यह कैसे हुआ, क्योंकि अब मैं इसे पुन: पेश नहीं कर सकता: पी .. मुझे यकीन है कि यह केवल मुझे नहीं है क्योंकि यह किसी और के आईफोन पर भी हुआ है। – koningdavid

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