2012-05-01 31 views
8

Giả sử tôi có một hình thức mà ngay bây giờ đang làm một bài:Cách đăng lên HTTP?

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

Bạn sẽ nhận thấy không có trang web trong action, trình duyệt sau đó nó đã trang từ.

Trình duyệt sau quy tắc tên miền hiện tại khi đăng

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 

Nhưng tôi muốn đảm bảo rằng trình duyệt sẽ luôn luôn đi đến an toàn page:

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

Thông thường bạn sẽ cố gắng một cái gì đó như :

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

Ngoại trừ t mũ yêu cầu phải biết tên miền và tên đường dẫn ảo của trang web lưu trữ (ví dụ: stackoverflow.com). Nếu trang web đã được thay đổi:

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

thì hình thức action sẽ phải được cập nhật thêm:

<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"> 

Tôi làm cách nào để hướng dẫn trình duyệt truy cập https phiên bản trang?


Giả định cú pháp:

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

bạn đã thử điều này: http://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-mod-rewrite? – j08691

+0

@ j08691 i * xảy ra * để ở trong ASP.net; nhưng tôi đã hy vọng giải pháp máy chủ độc lập (tức là khách hàng). –

+0

Trong Apache tôi đoán có thể có một cách để làm điều này với một tập tin .htaccess trong thư mục hiện hành. Hoặc chắc chắn điều này có thể được xây dựng bằng PHP hoặc ASP hoặc ngôn ngữ máy chủ khác trong số các phần. –

Trả lời

3

bạn có thể thay đổi hành động của mẫu với javascript:

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

Nhưng có một số security considerations, và tôi sẽ đề nghị bạn chuyển hướng url của hình thức của bạn để https. Và mặc dù bạn có thể làm điều đó từ javascript, bạn không bao giờ nên tin tưởng javascript khi nó được bảo mật, do đó, làm điều đó từ máy chủ (nó cũng nhanh hơn, trang không phải được tải, chỉ tiêu đề http)

+0

Điều đó vẫn yêu cầu tôi thay đổi hành động gửi của tôi từ '"/câu hỏi/hỏi/gửi "' tới '" http://beta.de.stackoverflow.net/mobile/questions/ask/submit "' :( –

+1

rồi lưu Bạn có thể có thể sử dụng cho điều đó, nhưng nếu điều đó có tác dụng phụ xấu, sau đó chỉ cần in nó vào một biến javascript: var baseUrl = "beta.de.stackoverflow.net/mobile/"; sau đó bạn có thể ghép nối form.action =" https: // "+ baseurl + form.action, HOẶC bạn chỉ có thể sử dụng location.hostname. – Gavriel

Các vấn đề liên quan