Quelle est la bonne réponse HTTP à envoyer pour les demandes qui nécessitent de SSL/TLS
Je suis de la conception d'une API RESTful où certains appels sont publiques sur HTTP, et certains exigent une clé API et le cryptage HTTPS. Je suis en train de délibérer sur ce code de réponse doit être envoyée si une requête HTTP est envoyée à l'une des ressources privées. Jusqu'à présent, le seul qui saute aux yeux est 412 - Échec de la Condition préalable, mais la norme indique que la condition est imposée par le demandeur et non sur le serveur.
Est-il une réponse appropriée code pour cette condition, ou dois-je tout simplement besoin de donner et de faire le 400?
Vous devez vous connecter pour publier un commentaire.
Le plus sûr moyen de forcer un client HTTP pour utiliser le protocole HTTPS est HTTP Strict Transport Security.
Déjà une proposition commune était à l'abandon de la connexion, mais ce la pratique a été supprimé en faveur de HSTS OWASP (site web).
Je ne peux pas dire si c'est largement acceptés par les clients HTTP, mais en parlant strictement RFC, le serveur doit répondre avec:
Source:
http://tools.ietf.org/html/rfc2817#section-4.2
https
comme nous le savons largement sais qu'il est spécifié dans la RFC 2818 (HTTP over TLS). RFC 2817 est pratiquement jamais utilisée. @dasil003, notez que les spécifications de l'IETF appel TLS "TLS", parce que c'est une norme IETF (SSL n'est pas): vous pourriez facilement tous les lire avec "SSL" dans l'esprit (sauf qu'il s'agit de versions antérieures en effet). RFC 2817 n'est pas sur la mise à niveau de TLS (1.x) à partir de SSLv3, c'est à propos de la mise à niveau de SSL/TLS à partir de la plaine HTTP, sur la même connexion.Le code d'erreur approprié pour revenir serait semblable à 403.4 - SSL requis.
Bien que n'étant pas explicitement décrite dans le RFC pour HTTP 1.1, ce comportement ne correspond pas aux exigences énoncées là:
L'ajout de votre propre sous-code (comme avec le protocole SSL exemple) pourrait être utile dans certains cas, mais étant donné que ce sous-code ne seraient pas utiles à des tierces parties, je vous recommande contre elle.
Donc, votre dernier message d'erreur serait quelque chose comme "403 - Ressource Privée". Notez que, même en cas de disparition d'une clé API "401 - non autorisé" ne doit pas être utilisé, sauf si votre clé API peut effectivement être transmis en-tête WWW-Authenticate champ.
Retour d'un 403 avec raison, la phrase "HTTPS Nécessaire" semble être une option pratique et de ce que j'utilise.
voir https://en.wikipedia.org/wiki/HTTP_403
Rediriger une Api REST n'est pas une bonne idée surtout que vous pouvez avoir aucune idée de comment ou quelle est la consommation à votre service.
Il suffit d'envoyer une redirection vers le correspondant https: URI.
Mise à JOUR
La est une mauvaise réponse - voir les commentaires ci-dessous