2008-12-12 8 views
19

मेरे पास एक ऐप है जो कुछ वेबव्यू उदाहरण बनाता है और मैं उन्हें यथासंभव स्वतंत्र रूप से संचालित करना चाहता हूं।कुकीज़ साझा किए बिना वेबकिट के कई उदाहरण कैसे हो सकते हैं?

कम से कम, मैं नहीं चाहता कि वे कुकीज़ साझा करें। एक त्वरित Google खोज ने मुझे "आप नहीं कर सकते" पसंद पसंद किया। मुझे उम्मीद है कि किसी के पास बेहतर जवाब होगा।

उत्तर

17

मूल उत्तर "आप नहीं कर सकते"।

थोड़ा सा देखने के बाद, मुझे लगता है कि यह संभव है, लेकिन बेहद जटिल है। इसमें आपके वेबव्यू पर संसाधन लोड लोडगेट को कार्यान्वित करना शामिल होगा जो -webView:resource:willSendRequest:redirectResponse:fromDataSource: लागू करता है और HTTPShouldHandleCookies को बंद करने के अनुरोध को संशोधित करता है और मैन्युअल रूप से अनुरोध पर कोई प्रासंगिक कुकीज़ जोड़ता है। सर्वर से लौटाई गई किसी भी कुकीज के बारे में जानने के लिए इसे -webView:resource:didReceiveResponse:fromDataSource: को भी लागू करना होगा। आप NSHTTPCookieStorage प्रति-वेबव्यू की अपनी प्रतिलिपि आवंटित/इनिट कर सकते हैं और कुकीज को स्टोर/पुनर्प्राप्त करने के लिए इसका उपयोग कर सकते हैं।

+0

हे। वह आश्चर्यजनक है। मैं अपनी समस्याओं के आसपास काम करने के लिए वेब सेवा को बदलना समाप्त कर दिया। मैं उम्मीद करता हूं कि यह एक तरह का आम (निजी मोड, बहु-उपयोगकर्ता परीक्षण, आदि ...) हो। इस मामले की तलाश के लिए धन्यवाद। – Dustin

+14

मैंने वास्तव में एक वेबव्यू सबक्लास लागू किया जो इस उत्तर में वर्णित विधि का उपयोग करता है। http://igisolatedcookiewebview.googlecode.com/ (नया बीएसडी लाइसेंस)। – Isaac

+0

@ इसाक वाह, जो मुझे चाहिए उसके लिए बिल्कुल सही है। मैंने देखा कि एक समस्या आपकी .m फ़ाइल (कुकीस्टोर सरणी प्रारंभ करना) की लाइन 152 में है, यदि आप एआरसी का उपयोग कर रहे हैं और बनाए रखने वाले कॉल को हटाते हैं, तो यह क्रैश हो जाता है। मुझे बस उस फ़ाइल पर -nono-objc-arc का उपयोग करना पड़ा। – sudo

0

मुझे लगता है कि कुकीज़ को सेवा/एप्लिकेशन स्तर पर कॉन्फ़िगर किया जाएगा, न कि विशेष उदाहरणों या प्रक्रियाओं के लिए। शायद आप अपनी समस्या को हल करने के लिए एक रास्ता खोजने के लिए अपने प्रश्न को संशोधित कर सकते हैं जिसके लिए आवश्यक है कि उदाहरण कुकीज साझा न करें।

उदाहरणों के बीच कुकीज़ साझा नहीं करने के लिए प्रेरणा क्या है?

यदि आपको एक ही वेब संसाधन में केवल 3 विचारों की आवश्यकता है तो आप कुछ वर्चुअल होस्ट सेट कर सकते हैं जो समान डेटा स्रोत को इंगित करते हैं।

+0

वेबव्यू वेबकिट का ब्राउज़र दृश्य है। मैंने प्रभावी रूप से एक ही वेब पेज को देखकर दो खिड़कियां पाई हैं, और मैं उन्हें एक ही सत्र का उपयोग नहीं करना चाहता हूं। – Dustin

3

This post बताता है कि आप क्या कर सकते हैं। मुझे यकीन नहीं है कि यह आपके लिए व्यवहार्य है और मुझे लगता है कि यह एक सीधा काम नहीं होगा, शायद जोखिम भरा भी होगा, लेकिन ऐसा लगता है कि संभव: लेखक का दावा है कि आईकैब इस तरह से करता है।

मैं वास्तव में एक आसान समाधान की उम्मीद कर रहा था, वास्तव में। बेशक, चूंकि वेबकिट ओपन सोर्स है, इसलिए आप अनुमानित व्यवहार के साथ ढांचे के अपने संस्करण को सिर्फ रोल कर सकते हैं?

0

आप क्या कर सकते हैं libcurl पर एक नज़र डालें जो कुकी स्टोर को संभाल सकता है जो यूआरएल के साथ मिश्रण नहीं करता है उन अनुरोधों के लिए सिस्टम विस्तृत कुकी स्टोरेज लोड हो रहा है जिन्हें आप अलग करना चाहते हैं। मेरे लिए यह एक वैध और सरल समाधान प्रतीत होता है। यदि आपको वास्तव में वेबव्यू/वेबकिट पर निर्भर रहने की आवश्यकता है तो यह नहीं हो सकता है।

+0

द्वारा anwser का wwewebview हाँ, webvivew सामान मेरे लिए बहुत महत्वपूर्ण था। मैं शायद इसे अभी भी बना सकता हूं, लेकिन दुनिया को फिर से लिखने से बचने की उम्मीद कर रहा था। मैं इसके बजाय सर्वर को बदलना समाप्त कर दिया। * आह * – Dustin

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