HTTP के माध्यम से सेवा श्रमिकों के परीक्षण के लिए विकल्प


96

मैं सेवा कर्मियों का परीक्षण करना चाहता हूं, लेकिन मेरे पास एक वर्चुअल होस्ट सेटअप है और मैं स्थानीयहोस्ट पर https सक्षम करने में सक्षम नहीं हो सकता।

जब भी मैं कोशिश करता हूं और स्थानीय कार्यकर्ता पर सेवा कार्यकर्ता के लिए पंजीकरण करता हूं, तो मैं अपने स्थानीय वर्चुअल होस्ट यूआरएल को कैसे श्वेत सूची में प्रदर्शित कर सकता हूं? Chrome का कहना है कि सेवा कार्यकर्ता को सक्षम करने के लिए https आवश्यक है। मैं कम से कम स्थानीय परीक्षण के लिए इस प्रतिबंध को कैसे पा सकता हूं।

जवाबों:


140

सामान्य तौर पर, आपको सेवाकर्मियों का उपयोग करने के लिए HTTPS के माध्यम से अपने पेज और सेवा कार्यकर्ता स्क्रिप्ट दोनों की सेवा करने की आवश्यकता होती है। औचित्य का वर्णन पावरफुल नए फीचर्स के लिए Prefer Secure Origins में किया गया है

स्थानीय विकास को सुविधाजनक बनाने के लिए HTTPS आवश्यकता का अपवाद है: यदि आप अपने पेज और सेवा कार्यकर्ता स्क्रिप्ट को http://localhost[:port]या http://127.x.y.z[:port]उसके माध्यम से एक्सेस करते हैं , तो सेवा कार्यकर्ताओं को बिना किसी और कार्रवाई के सक्षम होना चाहिए।

क्रोम के हाल के संस्करणों में, आप इस आवश्यकता के आसपास स्थानीय विकास को कम कर सकते हैं chrome://flags/#unsafely-treat-insecure-origin-as-secure, जैसा कि इस उत्तर में बताया गया है

फ़ायरफ़ॉक्स सेटिंग के माध्यम से समान कार्यक्षमता प्रदान करता हैdevtools.serviceWorkers.testing.enabled

कृपया ध्यान दें कि यह कार्यक्षमता केवल परीक्षण को सुविधाजनक बनाने के लिए है जो अन्यथा जगह लेने में सक्षम नहीं होगी, और आपको अपनी साइट के उत्पादन संस्करण की सेवा करते समय हमेशा HTTPS का उपयोग करने की योजना बनानी चाहिए। वास्तविक उपयोगकर्ताओं को उन झंडे को सक्षम करने के चरणों से गुजरने के लिए न कहें!


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

1
लोकलहोस्ट में सेवा कर्मी का उपयोग करना, लेकिन जब उसने सर्वर से sw.js फ़ाइल लाने की कोशिश की तो यह शुद्ध दिखाता है :: ERR_INSECURE_RESPONSE,
sp1rs

1
धन्यवाद! मैंने पढ़ने के लिए मुख्य निकाय को अद्यतन किया है devtools.serviceWorkers.testing.enabled
जेफ पॉनिक

5
जिन लोगों को ऊपर - एफ एफ - देव उपकरण - सेटिंग्स कोग व्हील - एडवांस्ड सेटिंग्स - एचटी ओवर स्वाइप सक्षम करने में परेशानी होती है। तब आप इसके बारे में जा सकते हैं: url या टूल्स में डिबगिंग # वर्कर्स - टूलबार में वेब देव - सर्विस वर्कर। कार्यकर्ता शुरू करो!
स्टेन मूव नोव

@StenMuchow का जवाब मेरे लिए क्रोम मैक और विंडो में काम कर रहा है
मोहम्मद हुसैन

51

यदि आप एक प्रगतिशील वेब ऐप के वास्तविक व्यवहार परीक्षण के लिए प्लग-इन मोबाइल डिवाइस के सेवा कार्यकर्ता को डिबग करना चाहते हैं , तो ssl chrome start विकल्प मदद नहीं करते हैं और आपको निश्चित रूप से प्रमाणपत्र खरीदने की आवश्यकता नहीं है।

@ क्रिस-रिस्पेल ने प्रॉक्सी सॉफ्टवेयर स्थापित करने का उल्लेख किया है, लेकिन वास्तव में पोर्ट अग्रेषण का उपयोग करने का एक आसान तरीका है :

यह मानते हुए कि आप Chrome का उपयोग करके अपने डिवाइस को कनेक्ट और डीबग करते हैं:

  • में क्रोम देव उपकरण "रिमोट डिवाइस" खुला "सेटिंग" और एक जोड़ने के "पोर्ट अग्रेषण" नियम।
  • यदि आपका लोकलहोस्ट सेटअप लोकलहोस्ट पर चल रहा है: 80,
  • बस एक नियम जोड़ें "डिवाइस पोर्ट 8080" (किसी भी unpriviliged पोर्ट> 1024 हो सकता है)
  • और स्थानीय पता "लोकलहोस्ट: 80" (या mytestserver.sometestdomainwithoutssl.company:8181 या जो भी हो)

आपके द्वारा ऐसा करने के बाद, आप अपने मोबाइल डिवाइस पर URL " http: // localhost: 8080 " को कॉल कर सकते हैं और इसका उत्तर आपके स्थानीय पीसी / टेस्ट सर्वर पर "लोकलहोस्ट: 80" द्वारा दिया जाएगा । पूरी तरह से सेवाकर्मियों के साथ काम करता है जैसे कि यह आपके मोबाइल पर चलने वाली स्थानीय मशीन हो।

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

इस जानकारी का स्रोत Google दूरस्थ उपकरणों का दस्तावेज़ीकरण है: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server (लेकिन अप्रैल 2017 के अनुसार इसे पढ़ने के लिए बहुत स्पष्ट नहीं है इसका सरल उत्तर)


होनहार लगता है, लेकिन मेरे लिए काम नहीं किया। पोर्ट फॉरवर्डिंग सेट करने के बाद Android 5.0.2 पर लोकलहोस्ट की यात्रा करने की कोशिश करने पर "इस साइट तक नहीं पहुँचा जा सकता है"।
जैक्सन

तो आपको लोकलहोस्ट पर https की आवश्यकता नहीं है? क्या SW ठीक काम करेगा?
मचाडो

2
इसका स्वीकृत उत्तर होना चाहिए, यह ठीक काम कर रहा है
मिकेल

तेज और आसान! अपने फोन पर यूएसबी डिबगिंग को सक्षम और स्वीकार करने के लिए मत भूलना और इसे अपने पीसी पर यूएसबी के माध्यम से प्लग करें। धन्यवाद दोस्त!
मार्कोस आर

लेकिन केवल http के लिए, यदि आप https पर संसाधनों का अनुरोध करते हैं, तो उन्हें कैश नहीं किया जाएगा।
महापुरूष

24

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

  1. मेरे लैपटॉप पर चार्ल्स को चलाएं (जो कि सेवा कार्यकर्ता के साथ मेरी वेबसाइट भी सेवा करता है)। एक बार चार्ल्स चल रहा है, चरण 2 के लिए आईपी / पोर्ट पर ध्यान दें।
  2. मेरे लैपटॉप को प्रॉक्सी के रूप में उपयोग करने के लिए मोबाइल डिवाइस को कॉन्फ़िगर करें।
    • एंड्रॉइड के लिए बस सेटिंग्स में अपने वाईफाई पर टैप करें और होल्ड करें> नेटवर्क > उन्नत सेटिंग्स > प्रॉक्सी को संशोधित करें । IP / पोर्ट सेट करने के लिए मैन्युअल का उपयोग करें ।
    • IOS के लिए (i) आइकन> HTTP प्रॉक्सी सेक्शन पर क्लिक करें । मैनुअल का चयन करें , फिर आईपी / पोर्ट सेट करें।
  3. यात्रा पर जाने वाले localhostअपने मोबाइल डिवाइस पर अब सेवा कार्यकर्ता पंजीकृत है और परीक्षण किया जा सकता है।

4
मैं भी उस समस्या का सामना कर रहा हूँ, बहुत बहुत धन्यवाद। मोबाइल का परीक्षण करना पूरी तरह से असंभव है, बिना प्रॉक्सी के। इस पद को और अधिक मतों की आवश्यकता है।
फियो अर्कार Lwin

1
@ chris-ruppel वास्तव में, क्रोम देव उपकरण का उपयोग करके अतिरिक्त प्रॉक्सी सॉफ्टवेयर के बिना ऐसा करने का एक तरीका है, दूरस्थ उपकरणों को अग्रेषित करना। मैंने इस सूत्र में एक विस्तृत उत्तर जोड़ा है।
क्रिस्टोफर लोर्केन

"मोबाइल का परीक्षण करना पूरी तरह से असंभव है;" लेकिन यह मामूली निरीक्षण है। आइए उन लोगों की सराहना करें जो सेवा कर्मियों को निर्दिष्ट करते हैं ...
जैक्सन

क्रिस आप "1. मेरे लैपटॉप पर चार्ल्स चलाएं" पर विस्तार से बता सकते हैं? एक चार्ल्स प्रॉक्सी स्थापित कर सकता है। उनके कंप्यूटर पर लोकलहोस्ट: 8080 पर सर्वर चल रहा है। फिर क्या? आप "आईपी / पोर्ट पर ध्यान दें" भी कहते हैं। कहाँ पे?
जैक्सन

1
@ChrisRuppel मैं करने के लिए बंद कर ngrok.com : नि: शुल्क, अपने स्थानीय अनुप्रयोग के लिए एक सार्वजनिक HTTPS साइट बनाता है, और एक आकर्षण की तरह काम करता है! कनेक्ट होने तक पहले रन में थोड़ा समय लगा। केवल यही सलाह देता हूं कि यदि आप अमेरिका में नहीं हैं ( ngrok.com/docs#config-options , "क्षेत्रों" पैरामीटर) को स्विच करना है ।
कार्स्टन सिल्ज़

11

मेरे मामले में pwa का परीक्षण करने का सबसे आसान तरीका, ngrok का उपयोग करना था। https://ngrok.com/download लॉग इन करें, उर टोकन प्राप्त करें और इसे सेट करें!

जब आप चलाते हैं, ./ngrok http {your server port}तो सुनिश्चित करें कि आप https का उपयोग करते हैं, जो ऊपर दिए गए इस कमांड को चलाने के बाद आपको टर्मिनल में दिखाया जाएगा।


आप इस्तेमाल कर सकते हैं https://surge.sh भी, यह मेजबान के लिए एक स्थिर वेबपेज है, यदि आप में यहां जाएं https://surge.sh/help/securing-your-custom-domain-with-ssl में सक्षम हो जाएगा ssl प्रमाणपत्र सेट करने का तरीका देखें


एक जादू की तरह काम किया! महान सिफारिश के लिए धन्यवाद!
कर्स्टन सिल्ज़

यह भी मदद करता है, हालांकि प्रकाशस्तंभ का उपयोग कर एक रिपोर्ट बनाने में परेशानी हो रही है
Cj Oyales

3

जैसा कि जेफ ने पहली प्रतिक्रिया में उल्लेख किया है, आपको सर्विस वर्कर्स का परीक्षण करने के लिए स्थानीय स्तर पर https की आवश्यकता नहीं है। जब तक आप HTTPS के बिना सेवा कार्यकर्ता पंजीकरण और स्थानीयहोस्टेन डोमेन तक पहुँचते हैं, तब तक ठीक काम करेंगे।

एक बार जब आप अपने आवेदन को लोकलहोस्ट पर परीक्षण कर लेते हैं और आप यह देखना चाहते हैं कि यह असली के लिए https के साथ कैसे काम करता है, तो सबसे आसान तरीका यह होगा कि आप अपने ऐप को GitHub पर अपलोड करें। आप मुफ्त (और HTTPS के साथ!) के लिए एक सार्वजनिक डोमेन बना सकते हैं।

यहाँ निर्देश हैं: https://pages.github.com/


1
सॉफ़्टवेयर अनुशंसाओं के लिए अनुवर्ती प्रश्न एक होगा: iOS और Android के लिए कौन से वेब सर्वर स्थानीयहोस्ट विधि का उपयोग करके मोबाइल डिवाइस पर परीक्षण के लिए अनुशंसित हैं?
डेमियन यरिक

मैं Erlang HTTP सर्वर का उपयोग कर रहा हूं लेकिन किसी भी सर्वर को काम करना चाहिए। मैंने Chrome से 200 HTTP सर्वर से पहले उपयोग किया था, जिसे आप Google बाज़ार से एक्सेस कर सकते हैं।
मिगुएल गार्डो

3

यदि आप किसी ऐसे ग्राहक डिवाइस पर सेवा श्रमिकों का परीक्षण करना चाहते हैं, जो लोकलहोस्ट पर वेब सर्वर नहीं चला सकता है, तो सामान्य तकनीक इस प्रकार है:

  1. अपने सर्वर को एक होस्टनाम दें।
  2. इस होस्टनाम को एक प्रमाण पत्र दें।
  3. IP को इस प्रमाणपत्र को जारी करने वाले CA पर भरोसा करें।

लेकिन यह कहा की तुलना में आसान है। नवंबर 2016 में Reddit पर एएमए, एक लेट्स एनक्रिप्ट के प्रतिनिधि ने स्वीकार किया कि एचटीटीपीएस एक निजी लैन पर "वास्तव में एक कठिन सवाल है, और मुझे लगता है कि अब तक कोई भी संतोषजनक जवाब नहीं आया है।"

आपके कंप्यूटर को होस्टनाम देने के सामान्य तरीके जिसमें इसे एक स्थिर आंतरिक आईपी पता देना शामिल है, न कि वह जो हर दिन बदलता है या हर बार जब आप अपने इंटरनेट गेटवे उपकरण को पावर-साइकिल करते हैं। आपको अपने नेटवर्क पर डीएचसीपी सर्वर को कॉन्फ़िगर करने की आवश्यकता होगी, आमतौर पर आपके गेटवे में, एक "आरक्षण" स्थापित करने के लिए जो आपके विकास कार्य केंद्र के ईथरनेट कार्ड के मैक पते के साथ एक विशेष निजी पते (सामान्य रूप से 10/8या भीतर 192.168/16) को जोड़ता है । इसके लिए अपने गेटवे का मैनुअल पढ़ें।

अब जब आपके विकास कार्य केंद्र में एक स्थिर IP पता है, तो एक समय / मनी ट्रेडऑफ़ है। यदि आप उन्नत DNS और OpenSSL उपयोग सीखने और सभी उपकरणों पर एक रूट प्रमाणपत्र स्थापित करने के लिए तैयार हैं, जिसके साथ आप परीक्षण करना चाहते हैं:

  1. अपने नेटवर्क पर एक आंतरिक DNS सर्वर चलाएं। यह आपके प्रवेश द्वार या आपके विकास कार्य केंद्र पर हो सकता है।
  2. अपने DNS सर्वर को कुछ बने हुए TLD के लिए आधिकारिक करने के लिए कॉन्फ़िगर करें और अन्य TLD के लिए पुनरावर्ती।
  3. अपने विकास कार्य केंद्र के निजी आईपी पते को एक स्थिर नाम दें। यह इसे आंतरिक नाम देता है।
  4. पट्टों को प्राप्त करने वाले अन्य उपकरणों के लिए इस DNS सर्वर का पता देने के लिए अपने डीएचसीपी सर्वर को कॉन्फ़िगर करें।
  5. अपने विकास कार्य केंद्र पर, निजी प्रमाणपत्र प्राधिकारी और वेब सर्वर के लिए कीपर्स उत्पन्न करने के लिए ओपनएसएसएल का उपयोग करें।
  6. ओपनएसएसएल का उपयोग करते हुए, सीए के लिए एक रूट प्रमाणपत्र और वेब सर्वर के आंतरिक नाम के लिए एक प्रमाण पत्र जारी करें।
  7. इस प्रमाणपत्र का उपयोग करके अपने विकास कार्य केंद्र पर वेब सर्वर में HTTPS कॉन्फ़िगर करें।
  8. सभी उपकरणों पर एक विश्वसनीय रूट प्रमाणपत्र के रूप में CA का रूट प्रमाणपत्र स्थापित करें।
  9. सभी उपकरणों पर, इस आंतरिक नाम का उपयोग करें।

यदि आप रूट प्रमाणपत्र नहीं जोड़ सकते हैं या स्थानीय DNS को नियंत्रित कर सकते हैं, जैसे कि यदि आप दूसरों के स्वामित्व वाले उपकरणों (BYOD) या अधिक लॉक-डाउन ब्राउज़रों के साथ परीक्षण करने की योजना बनाते हैं जो उपयोगकर्ताओं को विश्वसनीय रूट प्रमाणपत्र जोड़ने की अनुमति नहीं देते हैं, जैसे कि प्रमुख वीडियो गेम कंसोल, आपको पूरी तरह से योग्य डोमेन नाम (FQDN) की आवश्यकता होगी:

  1. एक रजिस्ट्रार से एक डोमेन खरीदें जो एक एपीआई के साथ डीएनएस प्रदान करता है । यह सीधे TLD के भीतर या डायनेमिक DNS प्रदाताओं में से एक से हो सकता है जिसने इसे सार्वजनिक प्रत्यय सूची में बनाया है। (गैर-पीएसएल डायनेमिक डीएनएस प्रदाता लेट एनक्रिप्ट द्वारा लगाए गए सीमा दर के कारण अस्वीकार्य हैं ।)
  2. इस डोमेन की ज़ोन फ़ाइल में, Aअपने विकास कार्य केंद्र के निजी आईपी पते पर एक रिकॉर्ड इंगित करें। यह आपके विकास कार्य केंद्र को एक FQDN देता है।
  3. डीईएनdns-01 एनक्रिप्टेड अथॉरिटी से इस एफक्यूडीएन के लिए एक प्रमाण पत्र प्राप्त करने के लिए चुनौती का समर्थन करने वाले एक एसीएमई ग्राहक, निर्जलित का उपयोग करें ।
  4. इस प्रमाणपत्र का उपयोग करके अपने विकास कार्य केंद्र पर वेब सर्वर में HTTPS कॉन्फ़िगर करें।
  5. सभी उपकरणों पर, इस नाम को एक्सेस करें।

1

मुझे लगता है कि सेवा कार्यकर्ता का परीक्षण करने का सबसे आसान तरीका एक मुफ्त होस्टिंग प्रदाता है। आजकल, कई साइटें हैं जो मुफ्त होस्टिंग प्रदान करती हैं। आप इस फ्री सर्वर पर अपने ऐप को आसानी से होस्ट कर सकते हैं।

मैं ज्यादातर हरोकू और नेटलाइज़ का उपयोग करता हूं । यह मुफ्त और उपयोग में आसान है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.