मेरे पास एक ऐप इंजन वेबसाइट है, और मैं https की आवश्यकता है और सभी ट्रैफ़िक को https पर रीडायरेक्ट करने का प्रयास कर रहा हूं। हालांकि, केवल एक ही ट्रैफ़िक जो https पर रीडायरेक्ट हो जाता है, वह डोमेन www.hotplate.com है, और कुछ नहीं, यहां तक ​​​​कि विविधताएं जैसे कि hotplate.com, www.hotplate.com/deck, आदि। मैं https तक पहुंचने में सक्षम हूं हालांकि ये यूआरएल मैन्युअल रूप से। नीचे मेरा app.yaml है। मैंने यह सुनिश्चित करने के लिए जाँच की कि एसएसएल प्रमाणपत्र हैं और ऐसा प्रतीत होता है। किसी भी प्रकार की मदद की बेहद सराहना की जाती है। धन्यवाद।

रनटाइम: नोडज एनवी: फ्लेक्स

हैंडलर: - url: .* सुरक्षित: हमेशा रीडायरेक्ट_http_response_code: 301 स्क्रिप्ट: ऑटो

स्वचालित_स्केलिंग: min_num_instances: 1 cpu_utilization: target_utilization: 0.9

संसाधन: सीपीयू: .1 मेमोरी_जीबी: 0.9 डिस्क_साइज_जीबी: 10

0
Andy Prevalsky 4 पद 2019, 22:02

2 जवाब

आपको संभवतः url तत्व को इस प्रकार अपडेट करना होगा:...

handlers:
- url: /.*
  script: auto
  secure: always
  redirect_http_response_code: 301
0
Parth Mehta 4 पद 2019, 22:21
यह उत्तर ऐप इंजन मानक के लिए है। ऐप इंजन फ्लेक्सिबल पर लागू नहीं होता है।
 – 
John Hanley
4 पद 2019, 22:44
मुझे लगता है कि आप सही हैं, मैंने जो सुझाव दिया वह ऐप इंजन मानक के लिए था, यह मानते हुए कि यह फ्लेक्सिबल पर भी लागू होगा। क्षमा याचना। निम्नलिखित पोस्ट को पढ़ने से ऐसा प्रतीत होता है कि वर्तमान में ऐप इंजन फ्लेक्सिबल के लिए ऐसा करना संभव नहीं है: अधिक जानकारी के लिए इस पोस्ट को देखें stackoverflow.com/questions/33878825/…
 – 
Parth Mehta
4 पद 2019, 22:59
यह निश्चित रूप से संभव है, सिर्फ app.yaml के माध्यम से नहीं। मेरे उत्तर का संदर्भ लें।
 – 
John Hanley
4 पद 2019, 23:38

ऐप इंजन फ्लेक्सिबल के लिए, आपको यह पता लगाना होगा कि उपयोगकर्ता HTTP का उपयोग करके आया है और उपयोगकर्ता को HTTPS पर पुनर्निर्देशित करता है।

आपके कॉन्फ़िगरेशन में यह अनुभाग ऐप इंजन मानक के लिए है और ऐप इंजन फ्लेक्सिबल द्वारा समर्थित नहीं है:

secure: always
redirect_http_response_code: 301 

सीधे reactjs और मैन्युअल रूप से ऐसा करने के कई तरीके हैं। आपको यह भी विचार करने की आवश्यकता है कि आपका एप्लिकेशन इंटरनेट का सामना कर रहा है या लोड बैलेंसर के पीछे की साइट है।

यदि आपका एप्लिकेशन लोड बैलेंसर के पीछे है तो आपको यह निर्धारित करने के लिए X-Forwarded-Proto प्रोटोकॉल हेडर को संसाधित करने की आवश्यकता है कि उपयोगकर्ता किस प्रोटोकॉल (HTTP/HTTPS) से लोड बैलेंसर से जुड़ा है।

सटीक तरीका आपके आर्किटेक्चर और स्रोत कोड पर निर्भर करता है जो आपके प्रश्न में प्रदान नहीं किया गया है।

उदाहरण के लिए, यह स्निपेट X-Forwarded-Proto HTTP हेडर को प्रोसेस करेगा, जिसका मतलब है कि आपका एप्लिकेशन लोड बैलेंसर या प्रॉक्सी के पीछे होना चाहिए:

  if (req.headers['x-forwarded-proto'] != 'https') {
    res.redirect(status, 'https://' + req.hostname + req.originalUrl);
  }

यहाँ एक और स्निपेट है:

app.use(function(request, response){
  if(!request.secure){
    response.redirect("https://" + request.headers.host + request.url);
  }
});
0
John Hanley 4 पद 2019, 22:54