template sslconnectionsocketfactory example http rest ssl https httpresponse

sslconnectionsocketfactory - set sslcontext httpclient



¿Cuál es la respuesta HTTP adecuada para enviar para las solicitudes que requieren SSL/TLS? (5)

Devolver un 403 con la frase de razón " HTTPS obligatorio " parece una opción práctica y lo que uso.

ver https://en.wikipedia.org/wiki/HTTP_403

Redirigir un REST Api no es una buena idea, especialmente porque no tienes idea de cómo o qué está consumiendo tu servicio.

Estoy diseñando una API RESTful donde algunas llamadas son públicas a través de HTTP, y algunas requieren una clave API y cifrado a través de HTTPS. Estoy deliberando sobre qué código de respuesta se debe enviar si se envía una solicitud HTTP a uno de los recursos privados. Hasta ahora, el único que me ha saltado es 412 - Error de precondición , pero el estándar indica que la condición previa es impuesta por el solicitante, no por el servidor.

¿Hay un código de respuesta apropiado para esta condición o solo necesito ceder y hacer 400 ?


El código de error apropiado para devolver sería similar a 403.4 - Se requiere SSL .

Aunque no está explícitamente documentado en el RFC para HTTP 1.1 , este comportamiento cumple con los requisitos que se detallan allí:

El servidor entendió la solicitud, pero se niega a cumplirla. La autorización no ayudará y la solicitud NO DEBE repetirse. Si el método de solicitud no era HEAD y el servidor desea hacer público el motivo por el cual no se ha cumplido la solicitud, DEBERÍA describir el motivo de la negativa en la entidad. Si el servidor no desea poner esta información a disposición del cliente, se puede usar el código de estado 404 (No encontrado).

Agregar su propio subcódigo (como con el ejemplo de SSL) podría ser útil en algunos casos, pero dado que este subcódigo no sería significativo para terceros, recomendaría que no lo haga.

Entonces, su mensaje de error final sería algo así como "403 - Recurso privado". Tenga en cuenta que, incluso en el caso de que falte una clave de API, no se debe usar "401 - No autorizado", a menos que su clave de API realmente se pueda transmitir en un campo de encabezado WWW-Authenticate.



No puedo decir si esto es ampliamente aceptado por los clientes HTTP, pero hablando estrictamente RFC, el servidor debería responder con:

HTTP/1.1 426 Upgrade Required Upgrade: TLS/1.0, HTTP/1.1 Connection: Upgrade

Fuente:
http://tools.ietf.org/html/rfc2817#section-4.2


Simplemente envíe un redireccionamiento al https correspondiente: URI.

ACTUALIZAR

La respuesta es incorrecta - ver comentarios a continuación