Sembra che la scelta di andare con 302 su 301 fosse un po 'arbitraria per cominciare. Tuttavia, non necessariamente segue che ogni URL sta per "avere" per utilizzare lo schema HTTPS. Molto bene potrebbe essere una pagina che consente l'accesso sia da HTTP che da HTTPS anche se potrebbe incoraggiare quest'ultimo. Un'implementazione in cui ciò potrebbe accadere potrebbe avere un po 'di codice cablato per determinare se utilizzare o meno HTTPS in base ad alcuni criteri speciali.
Come scenario, dai un'occhiata a Gmail. All'interno delle impostazioni, uno è in grado di consentire o disabilitare il protocollo HTTPS su ampie porzioni dell'applicazione. Quale codice dovrebbe essere restituito allora? 301 non sarebbe preciso, in quanto non è "permanente" ... solo un cambiamento su richiesta dell'utente. Purtroppo, il 302 non è del tutto preciso perché un errore 302 implica che ci sia l'intento di cambiare il link in un momento successivo (riferimento correlato http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html).
Concesso, Gmail è un esempio approssimativo perché le parti del sito che consentono tale opzione non sono in genere indicizzate da un motore di ricerca, ma la possibilità esiste ancora.
E per rispondere alla domanda finale, se si desidera un codice di stato diverso in ASP.NET MVC (che presumo si stia utilizzando dall'esempio di sintassi piccola), è possibile modificare con un semplice attributo personalizzato:
public class MyRequireHttpsAttribute : RequireHttpsAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (!filterContext.HttpContext.Request.IsSecureConnection)
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
}
}
Ora tutte le azioni che implementano l'attributo dovrebbe restituire un codice 301 di stato quando si accede tramite il protocollo HTTP.
http://webmasters.stackexchange.com/questions/22268/when-redirecting-from-http-to-https-in-a-shop-site-which-status-code-should-iu – Hupperware