Trabajar con CORS
El uso compartido de recursos de origen cruzado (CORS) es un protocolo basado en cabecera que permite a JavaScript realizar solicitudes en su nombre para acceder a recursos de otro dominio. Configure Cloud Gate para que active CORS y aplique los valores de CORS para Cloud Gate que se ejecuta en el gateway de aplicación o los dominios de identidad de IAM.
CORS ayuda a evitar que el delincuente JavaScript (plantado en un sitio por atacantes, por ejemplo, mediante el uso de anuncios) realice solicitudes AJAX en su nombre. Las solicitudes fraudulentas de AJAX podrían retirar dinero de su banco o realizar compras a su nombre en un sitio de compras en línea. Estas solicitudes se pueden realizar correctamente si actualmente tiene una sesión activa con esos sitios. CORS estipula que si un servidor no responde con el juego correcto de cabeceras de respuesta, el explorador no permite que JavaScript vea (o acceda) la respuesta.
- dominio: por ejemplo,
site1.oraclecloud.com
llama aoracle.com
- subdominio: por ejemplo,
site1.oraclecloud.com
llama asite7.oraclecloud.com
- puerto: por ejemplo,
site1.oraclecloud.com
llama asite1.oraclecloud.com:3030
- protocolo: por ejemplo,
https://site1.oraclecloud.com
llama ahttp://site1.oraclecloud.com
Una solicitud CORS se presenta en dos formas: una solicitud CORS simple o una solicitud CORS de verificación previa.
Solicitud simple de CORS
- El método es uno de los siguientes:
GET
POST
HEAD
- Las cabeceras HTTP permitidas que se pueden agregar manualmente a la solicitud CORS simple son:
Accept
Accept-Language
Content-Language
Content-Type
DPR
Downlink
Save-Data
Viewport-Width
Width
- Si se define
Content-Type
, debe ser:application/x-www-form-urlencoded
multipart/form-data
text/plain
Solicitud de comprobación previa de CORS
Si la solicitud JavaScript no cumple las características de una solicitud CORS simple, se envía una solicitud CORS de verificación previa al recurso ubicado en el otro dominio.
La solicitud de CORS de comprobación previa prueba si la solicitud real se puede enviar a ese recurso mediante la inclusión de cabeceras HTTP específicas en la solicitud que contiene los datos que han provocado que se dispare el flujo de solicitud de comprobación previa. En otras palabras, si la solicitud HTTP JavaScript ha especificado algún método/cabeceras en la solicitud HTTP que necesitaban una solicitud CORS de comprobación previa, la solicitud CORS de comprobación previa consulta al recurso para esos métodos/cabeceras para ver si el recurso acepta dicha solicitud entre dominios.
Propiedades y atributos de configuración de CORS de Cloud Gate
Propiedad de CORS | Descripción |
---|---|
cloudGateCorsEnabled |
Propiedad booleana para activar el soporte de CORS de Cloud Gate para el arrendamiento. Este valor se debe configurar en: Al activar el indicador El valor por defecto es Mejores prácticas. Configure |
cloudGateCorsAllowedOrigins |
La propiedad es una matriz de cadenas que contiene la lista de orígenes de CORS permitidos. El valor por defecto es una matriz vacía. Cada solicitud de CORS especifica su origen u origen en la cabecera de solicitud de origen. El valor de la cabecera de origen coincide con esta lista. Si el origen coincide, Cloud Gate agrega las cabeceras CORS adecuadas a su respuesta. Si el origen no coincide, Cloud Gate no devuelve ninguna cabecera de respuesta de CORS, lo que provoca que el explorador rechace la respuesta. Valores CORS permitidos en la plantilla de entrada:
Ejemplos:
|
cloudGateCorsAllowNullOrigin |
Propiedad booleana para soportar escenarios en los que el explorador envía un origen "nulo". Esta configuración se debe configurar para: El valor por defecto es Se envía un origen "nulo" si la solicitud de CORS procede de un archivo en el equipo de un usuario o si un servidor redirige a otro servidor en respuesta a una solicitud de CORS. El navegador pasa un Origen "nulo" cuando considera el Origen "tintado". Para aumentar la seguridad, por defecto, no se permiten orígenes "nulos". Algunos orígenes "nulos" son válidos. Las aplicaciones que aprovechan el inicio de sesión de flujo de explorador del dominio de identidad OpenID Connect (OIDC) verán orígenes "nulos" enviados a sus nodos de Cloud Gate. Cuando Cloud Gate redirige al dominio de identidad, autoriza al punto final a iniciar la conexión del explorador de OIDC y cuando el dominio de identidad redirige la solicitud de vuelta a Cloud Gate, el origen será "nulo". |
cloudGateCorsMaxAge |
Un número entero que especifica el número de segundos que el cliente (explorador) puede almacenar en caché una respuesta de CORS de comprobación previa. |
cloudGateCorsExposedHeaders |
La propiedad es una matriz de cadenas que muestra las cabeceras de respuesta que se pueden agregar a la cabecera de respuesta El valor por defecto es una matriz vacía. |
Configuración de valores de CORS de Cloud Gate en dominios de identidad
Cloud Gate requiere que configure los siguientes valores en los dominios de identidad para el soporte de uso compartido de recursos de origen cruzado (CORS).
isCorsAllowed
del documento de política de nivel web se ha configurado en true
, Cloud Gate permitiría la comprobación previa de solicitudes de CORS a través de aplicaciones protegidas. La versión mínima de Cloud Gate necesaria es la 21.1.2.
Utilice el punto final /admin/v1/Settings/Settings
para configurar los valores de CORS. La solicitud es una operación patch
. Consulte Actualización de un valor para obtener más información.
Flujos de trabajo de solicitud de CORS simples y de verificación previa
Descripción general de los flujos de trabajo de solicitud de uso compartido de recursos de origen cruzado (CORS).
Flujo de trabajo de solicitud de CORS simple
- La solicitud se identifica como solicitud CORS por la presencia de la cabecera de solicitud de origen.
- Si es necesario (por ejemplo, caducidad de la caché), la configuración de CORS de Cloud Gate se descarga de los dominios de identidad en IAM.
- Cloud Gate procesa la solicitud, ya sea rechazando la solicitud o permitiéndola a través del servidor de aplicaciones ascendente.
- Antes de que se devuelva una respuesta, Cloud Gate aplica CORS según lo definido por la configuración de CORS de Cloud Gate.
- Cloud Gate siempre garantiza que la cabecera de respuesta variable forma parte de la respuesta y contiene la cabecera "Origen". Esto ocurre incluso para solicitudes que no sean de CORS.
- Si
cloudGateCorsEnabled
esfalse
, el procesamiento se para aquí. La respuesta se devuelve tal cual. - Cloud Gate verifica que el origen está permitido, mediante la lista configurada de orígenes permitidos.
Si no se permite el origen, todas las cabeceras de respuesta de CORS soportadas se borran de la respuesta y finaliza el procesamiento.
- La cabecera de respuesta
Access-Control-Allow-Origin
se agrega y configura al valor de la cabecera de solicitud de origen. - La cabecera de respuesta
Access-Control-Allow-Credentials
se agrega y configura entrue
. Access-Control-Expose-Headers
se configura en la intersección entre el valorcloudGateCorsExposedHeaders
y la lista de cabeceras que se devuelven en la respuesta.- Los valores
Access-Control-Allow-Methods
,Access-Control-Allow-Headers
yAccess-Control-Max-Age Response Headers
se eliminan de la respuesta.
- Cloud Gate devuelve su respuesta.
Cloud Gate sobrescribe las cabeceras Access-Control-Allow-Origin
y Access-Control-Allow-Credentials Response
si las define el servidor de aplicaciones ascendente.
Verificar previamente flujo de trabajo de solicitud de CORS
- La solicitud se identifica como solicitud CORS por la presencia de la cabecera de solicitud de origen.
- Si es necesario (por ejemplo, caducidad de la caché), la configuración de CORS de Cloud Gate se descarga de los dominios de identidad en IAM.
- La solicitud se identifica como solicitud de CORS de comprobación previa mediante el método OPTIONS y la cabecera de solicitud
Access-Control-Request-Method
, además de la cabecera de solicitud de origen. - Si
cloudGateCorsEnabled
estrue
, se permite que la solicitud pase al servidor de aplicaciones ascendente para permitir que las aplicaciones implanten CORS.Si
cloudGateCorsEnabled
esfalse
, la antigua configuración de política de nivel webisCorsAllowed
se sigue respetando, justo más adelante en el procesamiento de la solicitud. - Antes de que la respuesta se devuelva desde Cloud Gate, CORS se aplica según lo definido por la configuración de CORS de Cloud Gate.
- Cloud Gate siempre garantiza que la cabecera Vary Response forma parte de la respuesta y que contiene la cabecera "Origin". Esto ocurre incluso para las solicitudes nonCORS.
- Si
cloudGateCorsEnabled
esfalse
, el procesamiento se para aquí. La respuesta se devuelve tal cual. - Cloud Gate verifica que el origen está permitido, mediante la lista configurada de orígenes permitidos.
Si no se permite el origen, todas las cabeceras de respuesta de CORS soportadas se borran de la respuesta y finaliza el procesamiento.
- La cabecera de respuesta
Access-Control-Allow-Origin
se agrega y configura al valor de la cabecera de solicitud de origen. - La cabecera de respuesta
Access-Control-Allow-Credentials
se agrega y configura entrue
. - Si el servidor de aplicaciones ascendente no ha agregado la cabecera de respuesta
Access-Control-Allow-Methods
, Cloud Gate construye su valor de la siguiente manera:- Si la cabecera Permitir respuesta está incluida en la respuesta, Cloud Gate utiliza su valor.
- Si se encuentra la cabecera de solicitud
Access-Control-Request-Method
en la solicitud, Cloud Gate utiliza su valor.
- Si el servidor de aplicaciones ascendente no ha agregado la cabecera de respuesta
Access-Control-Allow-Headers
, Cloud Gate utiliza el valor de la cabecera de solicitudAccess-Control-Request-Headers
en la solicitud si está presente. - Si
cloudGateCorsMaxAge
está configurado en un valor mayor que cero, la cabecera de respuestaAccess-Control-Max-Age
se agrega y se configura en el valor de antigüedad máxima. Si el valorcloudGateCorsMaxAge
es cero o menos, no se realiza ninguna acción para la cabecera de respuestaAccess-Control-Max-Age
. - Se ha eliminado la cabecera de respuesta
Access-Control-Expose-Headers
. No se aplica a Respuestas de comprobación previa.
- Cloud Gate devuelve su respuesta.