7

मैं आकस्मिक prying आंखों से विकास के शुरुआती चरण के दौरान एक साइट की रक्षा करने की कोशिश कर रहा हूँ। एचटीटीपीएस पर मूल लेख उचित समाधान की तरह लग रहा था लेकिन एक सेवा कर्मचारी की मौजूदगी इसे क्रोम में काम करने से रोकती है। यह विशेष रूप से होता है यदि कोई सेवा कार्यकर्ता पहले से स्थापित है, लेकिन ब्राउज़र के पास वांछित क्षेत्र के लिए सक्रिय प्रमाणीकरण नहीं है।HTTP बुनियादी लेख के साथ सेवा कार्यकर्ता संघर्ष?

क्रोम पता चलता है कि प्रतिक्रिया नेटवर्क समय रेखा में एक 401

401 in Network timeline

और यह भी पता चलता है कि ब्राउज़र टैब सही प्रतिक्रिया हेडर प्राप्त कर रहा है था:

HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Basic realm="My realm" 
Date: Tue, 21 Jun 2016 03:09:35 GMT 
Connection: close 
Cache-Control: no-cache 

लेकिन यदि ऐसा नहीं होता लॉगिन के लिए तत्काल, यह केवल 401 प्रतिक्रिया के सामग्री निकाय को दिखाता है।

क्या यह एक क्रोम बग है, या यह मेरे सेवावर्कर के साथ समस्या होने की संभावना है?

+0

कैसे क्रोम सेवा कार्यकर्ता अनुरोध के साथ प्रमाणन हेडर भेजने के लिए पता है? –

+0

@RickViscomi सेवा कार्यकर्ता नहीं करता है, लेकिन टैब चाहिए, है ना? इस प्रक्रिया में एसडब्ल्यू को एक अनजान मिडलबॉक्स होना चाहिए, यही वह है जिसे मैंने माना। – Andrew

उत्तर

5

मैंने क्रोम में सेवावर्कर को लागू करने के लिए जिम्मेदार Google इंजीनियरों में से एक को यह बताया, और उन्होंने यह निर्धारित किया कि यह एक क्रोमियम बग था। यहां दायर:

https://bugs.chromium.org/p/chromium/issues/detail?id=623464#

0

यह एक fetch() विकल्प दुर्भाग्य 'omit' साख को चूक की वजह से है। {'credentials': 'same-origin'} के साथ आपको fetch() की आवश्यकता है। GitHub pull request के लिए देखें।

अब यदि आप add() या addAll() का उपयोग कर रहे हैं तो आपको एक अनुरोध ऑब्जेक्ट पास करने की आवश्यकता होगी।

उदाहरण:

cache.addAll(
    cacheUrls.map(url => new Request(url, {credentials: 'same-origin'})) 
); 
संबंधित मुद्दे