2012-05-01 20 views
8

मान लें मैं एक रूप है कि अभी एक पोस्ट कर रहा है है:HTTP पर पोस्ट कैसे करें?

<form id="post-form" class="post-form" 
     action="https://stackoverflow.com/questions/ask/submit" method="post"> 

आप देखेंगे वहाँ action में कोई साइट है, ब्राउज़र इस प्रकार कहाँ से पेज मिला है।

ब्राउज़र जब

If the current page is...    then the browser will POST to 
======================================= ============= 
http://stackoverflow.com/questions/ask http://stackoverflow.com/questions/ask/submit 
https://stackoverflow.com/questions/ask https://stackoverflow.com/questions/ask/submit 

पोस्टिंग वर्तमान डोमेन नियमों का पालन करती लेकिन मैं यह सुनिश्चित करें कि ब्राउज़र हमेशा सुरक्षित पृष्ठ पर चला जाएगा चाहते हैं:

http://stackoverflow.com/questions/ask https://stackoverflow.com/questions/ask/submit 

आम तौर पर आप की तरह कुछ की कोशिश करेंगे :

<form id="post-form" class="post-form" 
     action="https://stackoverflow.com/questions/ask/submit" method="post"> 

टी को छोड़कर टोपी को होस्टिंग साइट के डोमेन और वर्चुअल पथ नाम को जानने की आवश्यकता है (उदा। stackoverflow.com)। यदि साइट बदल गया:

  • stackoverflow.net
  • stackoverflow.com/mobile
  • de.stackoverflow.com
  • stackoverflow.co.uk/fr
  • beta.stackoverflow.com

तो प्रपत्र action भी अद्यतन करना होगा:

<form id="post-form" class="post-form" action="https://stackoverflow.net/questions/ask/submit" method="post"> 

<form id="post-form" class="post-form" action="https://stackoverflow.com/mobile/questions/ask/submit" method="post"> 

<form id="post-form" class="post-form" action="https://de.stackoverflow.com/questions/ask/submit" method="post"> 

<form id="post-form" class="post-form" action="https://stackoverflow.co.uk/fr/questions/ask/submit" method="post"> 

<form id="post-form" class="post-form" action="https://beta.stackoverflow.com/questions/ask/submit" method="post"> 

मैं कैसे निर्देश दे सकते हैं ब्राउज़र एक पेज की https संस्करण के लिए जाने के लिए?


काल्पनिक वाक्य रचना:

<form id="post-form" class="post-form" action="https://./questions/ask/submit" method="post"> 
+0

है आपने यह कोशिश की: http://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-mod-rewrite? – j08691

+0

@ j08691 i * होता * एएसपीनेट में होना; लेकिन मैं एक सर्वर-स्वतंत्र (यानी ग्राहक) समाधान की उम्मीद कर रहा था। –

+0

अपाचे में मैं अनुमान लगा रहा हूं कि वर्तमान निर्देशिका में .htaccess फ़ाइल के साथ ऐसा करने का कोई तरीका हो सकता है। या निश्चित रूप से यह टुकड़ों के बाहर PHP या एएसपी या अन्य सर्वर भाषा में बनाया जा सकता है। –

उत्तर

3

आप जावास्क्रिप्ट के साथ फ़ॉर्म की ऐसी गतिविधि बदल सकते हैं:

var form = document.getElementById("post-form"); 
form.action = location.href.replace(/^http:/, 'https:'); 

लेकिन वहाँ कुछ security considerations हैं, और मैं अपने फ़ॉर्म के यूआरएल पुन: निर्देशित करना सुझाव है https। और यद्यपि आप इसे जावास्क्रिप्ट से कर सकते हैं, आपको सुरक्षा में आने पर जावास्क्रिप्ट पर भरोसा नहीं करना चाहिए, इसलिए इसे सर्वर से करें (यह भी तेज़ है, पृष्ठ लोड नहीं होना चाहिए, केवल http शीर्षलेख)

+0

अभी भी यह आवश्यक है कि मैं अपनी सबमिट कार्रवाई को '"/प्रश्न/पूछें/सबमिट करें "से' "http://beta.de.stackoverflow.net/mobile/questions/ask/submit" ':( –

+1

सेव करें वह base_url कहीं भी। आप इसके लिए का उपयोग कर सकते हैं, लेकिन यदि उसके पास दुष्प्रभाव हैं, तो बस इसे जावास्क्रिप्ट चर में प्रिंट करें: var baseUrl = "beta.de.stackoverflow।नेट/मोबाइल/"; फिर आप form.action =" https: // "+ baseurl + form.action को संयोजित कर सकते हैं, या आप केवल location.hostname का उपयोग कर सकते हैं। – Gavriel

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