¿Cómo POST a HTTPs?

Supongamos que tengo un formulario que en este momento está haciendo una publicación:

<code><form id="post-form" class="post-form" 
      action="/questions/ask/submit" method="post">
</code>

Notarás que no haysitio en elaction, el navegador sigue de donde sacó la página.

El navegador sigue las reglas de dominio actuales al publicar

<code>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
</code>

Pero quiero asegurarme de que el navegador siempre vaya a laseguro página:

<code>http://stackoverflow.com/questions/ask   https://stackoverflow.com/questions/ask/submit
</code>

Normalmente intentarías algo como:

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

Excepto que eso requiere conocer el dominio y el nombre de la ruta virtual del sitio de alojamiento (por ejemplo,stackoverflow.com). Si el sitio fuera cambiado:

stackoverflow.netstackoverflow.com/mobilede.stackoverflow.comstackoverflow.co.uk/frbeta.stackoverflow.com

entonces la formaaction Tendría que ser actualizado también:

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

¿Cómo puedo ordenar al navegador que vaya ahttps versión de unpágina?

Sintaxis hipotética:

<code><form id="post-form" class="post-form" action="https://./questions/ask/submit" method="post">
</code>
302, 303, 307

Originalmente302 Found fue el código para decirle al agente de usuario que vaya a otro lugar. La intención era que los navegadores simplemente volvieran a intentarlo en la nueva ubicación:

<code>POST /questions/ask/submit

302 Found
Location: /submitquestion

POST /submitquestion
</code>

Desafortunadamente, todos los navegadores se equivocaron, y siempre usaríanGET en la nueva ubicación:

<code>POST /questions/ask/submit

302 Found
Location: /submitquestion

GET /submitquestion
</code>

Debido a que los navegadores se equivocaron, se crearon dos nuevos códigos:

302 Found: (Legado en desuso) Intente exactamente lo mismo otra vez en la nueva ubicación; pero los navegadores antiguos estaban cambiando aGET303 See Other: Olvida lo que el usuario estaba haciendo y ve a hacerGET en esteUbicación307 Temporary Redirect: Intenta exactamente lo mismo otra vez en el nuevoUbicación (No, en serio, lo mismo. No dije que pudieras cambiar aGET. Si estuvieras haciendo unDELETE entonces veteDELETE por aquí.)

Por ejemplo, si el agente de usuario estaba en medio de unaPOST:

<code>| Response               | What agent should do  | What many agents actually do |
|------------------------|-----------------------|------------------------------|
| 302 Found              | POST to new Location  | GET from new Location        |
| 303 See Other          | GET from new Location | GET from new Location        |
| 307 Temporary Redirect | POST to new Location  | POST to new Location         |
</code>

Idealmente, habría una forma de usar307 See Other para decirle al agente de usuario para probar elPOST de nuevo en la URL segura:

<code>POST /questions/ask/submit

302 Found
Location: https://beta.stackoverflow.com/questions/ask/submit

POST /questions/ask/submit
</code>

y puedo salirme con la suya del servidor en ASP.net:

<code>if (!Request.IsSecureConnection)
{
   string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
   Response.Redirect(redirectUrl);

   //We don't want to send the client the deprecated 302 code, we want to use 307 telling them that we really want them to continue the POST, PUT, DELETE, etc
   Response.StatusCode = (int)System.Net.HttpStatusCode.TemporaryRedirect;     
   Response.End();
}
</code>

Pero no sé si puede especificar un uri completo en unLocation.

Respuestas a la pregunta(2)

Su respuesta a la pregunta