मैं HTTPS पृष्ठ से किसी दूसरे पृष्ठ पर HTTP पृष्ठ पर एक लिंक स्थापित करने में सक्षम था और अभी भी निम्नलिखित तकनीक का उपयोग करते हुए एक रेफरल के रूप में पहले पृष्ठ का URL पास करता हूं।
परिभाषाएं
मूल पृष्ठ : HTTPS पृष्ठ जहां HTTP होस्टेड गंतव्य पृष्ठ का लिंक स्थित है। इस उदाहरण में:https://example1.com/origin.html
डेस्टिनेशन पेज : एचटीटीपी पेज जिसमें ओरिजनल पेज के रेफरर की पहुंच होती है। इस उदाहरण में:http://example2.com/destination.html
मूल योजना
इसका मूल पृष्ठ के HTTP संस्करण से रीडायरेक्ट आने का प्रभाव पड़ता है:
HTTPS मूल पृष्ठ पर लिंक वर्तमान पृष्ठ से लिंक है लेकिन गंतव्य पृष्ठ [1] के लिए एक क्वेरी पैरामीटर जोड़ता है। उदाहरण के लिए:https://example1.com/origin.html?goto=http://example2.com/destination.html
जब लिंक पर क्लिक किया जाता है तो example1.com पर सर्वर उस मानक अनुरोध को बाधित करता है जब क्वेरी पैरामीटर 'गोटो' मौजूद होता है। फिर वो:
- एक 'गोटो' कुकी में 'गोटो' पैरामीटर संग्रहीत करता है।
- वर्तमान अनुरोध के url से 'गोटो' पैरामीटर और मान निकालता है
- मूल डोमेन के HTTP संस्करण पर इस नए साफ किए गए url को 302 रीडायरेक्ट करता है।
http://example1.com/origin.html
सर्वर एक 'गोटो' कुकी के लिए हर अनुरोध पर जाँच करता है और यदि वर्तमान कुकी को साफ़ कर देगा और फिर एक बहुत ही सरल पुनर्निर्देशित पृष्ठ को प्रस्तुत करेगा। इस पृष्ठ में [2] शामिल हैं:
- एक जावास्क्रिप्ट window.location.replace () स्क्रिप्ट जो गोटो कुकी यूआरएल को रीडायरेक्ट करती है।
- गोटो कुकी यूआरएल के मूल्य और कुछ सेकंड की देरी के साथ मेटा रीफ्रेश टैग।
- गोटो कुकी यूआरएल का लिंक।
टिप्पणियाँ
[१] यह मूल समाधान एक खुला पुनर्निर्देशक है और फ़िशिंग हमलों में यूएएस को पुनर्निर्देशित करने के लिए गोटो क्वेरी पैरामीटर का उपयोग करते हुए बुरे लोगों से बचाने के लिए कुछ विचार दिया जाना चाहिए।
[२] जेएस रीडायरेक्ट या मेटा रिफ्रेश टैग के माध्यम से रीडायरेक्ट करने पर सभी ब्राउज़र रेफ़रर को नहीं भेजेंगे। मेरे परीक्षण में IE8 और लोअर रेफरल पास नहीं करता है।
मुझे यकीन नहीं है कि अगर यह तकनीक खोज इंजन क्रॉलर को लिंक का पालन करने की अनुमति देगा। यह मेरी आवश्यकताओं के लिए महत्वपूर्ण नहीं है।
यदि UA में कुकीज़ अक्षम हैं, तो यह केवल मूल पृष्ठ पर पुनः निर्देशित करेगा।
केवल पुनर्निर्देशन के लिए HTTP कनेक्शनों की अनुमति
मेरे सर्वर पर अनुरोध के बावजूद HTTPS लागू करने के लिए एक अपाचे नियम है:
<VirtualHost *:80>
ServerName example1.com
# if not on port 443 then 301 redirect to https while keeping any query string
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example1\.com$ [NC]
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [L,QSA,R=301]
काम करने के लिए ऊपर पुनर्निर्देशन तकनीक के लिए मुझे HTTP कनेक्शन को सशर्त रूप से अनुमति देने के लिए किसी तरह की आवश्यकता है। इसे करने के कई तरीके हैं। मैंने तय किया कि एक कुकी काम करेगी।
<VirtualHost *:80>
ServerName example1.com
# if not on port 443 then 301 redirect to https while keeping any query string
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example1\.com$ [NC]
RewriteCond %{SERVER_PORT} !443
RewriteCond %{HTTP_COOKIE} !disable_ssl [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [L,QSA,R=301]
अक्षम_पास कुकी को चरण 2 में सेट किया जाएगा और फिर चरण 3 में हटा दिया जाएगा।
Origin
बरकरार होना चाहिए, हालांकि आपके उपयोग के मामले अनुरूप न हो।