CORS
El mecanismo Cross-Origin Resource Sharing (CORS) permite realizar peticiones y transferencias de datos seguras entre navegadores y servidores web. El estándar CORS funciona añadiendo nuevas cabeceras HTTP que permiten a los servidores describir el conjunto de orígenes que tienen permiso para leer esa información. Esta política proporciona soporte CORS que utiliza cabeceras HTTP adicionales para permitir que un cliente o una aplicación obtenga permiso para acceder a los recursos seleccionados. Una aplicación o un cliente realiza una petición cross-origin HTTP cuando solicita un recurso de un dominio, protocolo o puerto diferente al que originó la petición actual.
Si desea aplicar esta política en webMethods API Gateway a nivel de API, asegúrese de haber establecido la propiedad watt.server.cors.enabled en false.
Esta política es aplicable a las API REST, SOAP y ODATA. La tabla enumera las especificaciones de respuesta CORS que puede especificar para esta política:
| Propiedad | Descripción |
|---|---|
| Orígenes permitidos | Especifica el origen desde el que se permiten las respuestas originadas. sintaxis para el origen: scheme://host:port Puede añadir varios orígenes pulsando el botón Añadir. También puede proporcionar expresiones regulares para los orígenes permitidos. Los orígenes permitidos también pueden especificarse en la sección Avanzadas, en Aplicaciones. Los orígenes permitidos de las aplicaciones registradas en esta API también pueden acceder a ella. |
| Permitir cabeceras | Especifica las cabeceras permitidas en la solicitud. Puede añadir varias cabeceras permitidas haciendo clic en |
| Exponer cabeceras | Especifica las cabeceras que se expondrán al usuario en caso de fallo de la solicitud. Puede añadir varias cabeceras permitidas haciendo clic en |
| Permitir credenciales | Especifica si webMethods API Gateway incluye el encabezado Access-Control-Allow-Credentials. |
| Métodos permitidos | Especifica los métodos permitidos en la solicitud. Especifique una o más de las siguientes opciones: GET, POST, PUT, DELETE y PATCH. |
| Edad máxima | Especifica la edad para la que es válida la respuesta de verificación previa. |
Se establece una cabecera HTTP correspondiente para todos los valores según la especificación. Para más información, consulte https://www.w3.org/TR/cors/.
webMethods API Gateway gestiona de forma diferente las solicitudes de preflight CORS y las solicitudes CORS. Para obtener más información sobre el flujo de trabajo de la verificación previa de CORS y la solicitud de CORS, consulte el diagrama de flujo correspondiente.
Solicitud de verificación previa CORS
Una petición CORS preflight es una petición HTTP que un navegador envía antes de la petición CORS original para comprobar si el webMethods API Gateway servidor permitirá la solicitud CORS real. La solicitud de verificación previa CORS utiliza el método OPTIONS e incluye estas cabeceras como parte de la solicitud enviada desde el navegador a API Gateway :
- Origen
- Método de solicitud de control de acceso
- Encabezados de solicitud de control de acceso
El siguiente diagrama de flujo explica el flujo de la solicitud de prevuelo CORS recibida en API Gateway :

La siguiente tabla muestra los distintos casos de uso de la solicitud CORS preflight originada en el navegador y cómo webMethods API Gateway responde a cada una de las peticiones CORS preflight:
| # | Cabeceras de solicitud CORS Preflight del navegador | Política CORS configurada en webMethods API Gateway | webMethods API Gateway envía la respuesta correspondiente al navegador |
|---|---|---|---|
| 1 | Origen: http://test.com Método de solicitud de control de acceso: POST Encabezados de solicitud de control de acceso: test1,test2 |
Control de acceso - Permitir origen: http://test2.com Métodos permitidos para el control de acceso: POST, GET, PUT Access-Control-Allow-Headers: test1,test2 |
Envía el estado 403 Specified Origin is not allowed , ya que la cabecera Origen ( http://test.com ) del navegador no coincide con el Access-Control-Allow-Origin ( http://test2.com ) configurado en la política CORS. |
| 2 | Origen: http://test2.com Método de solicitud de control de acceso: DELETE Encabezados de solicitud de control de acceso: test1,test2 |
Control de acceso - Permitir origen: http://test2.com Métodos permitidos para el control de acceso: POST, GET, PUT Access-Control-Allow-Headers: test1,test2 |
Sends 405 Method Not Allowed ya que el encabezado Access-Control-Request-Method (DELETE) del navegador no coincide con los Access-Control-Allow-Methods (POST,GET,PUT) configurados en la política CORS. |
| 3 | Origen: http://test2.com Método de solicitud de control de acceso: POST Encabezados de solicitud de control de acceso: test3 |
Control de acceso - Permitir origen: http://test2.com Métodos permitidos para el control de acceso: POST, GET, PUT Access-Control-Allow-Headers: test1,test2 |
Sends 403 Header Not Supportedya que la cabecera Access-Control-Request-Headers ( test3 ) del navegador no coincide con la cabecera Access-Control-Allow-Headers ( test1,test2 ) configurada en la política CORS. |
| 4 | Origen: http://test2.com Método de solicitud de control de acceso: POST Encabezados de solicitud de control de acceso: test1 |
Control de acceso - Permitir origen: http://test2.com Métodos permitidos para el control de acceso: POST Access-Control-Allow-Headers: test1, test2 Control de acceso - Edad máxima: 100 Control de acceso: permitir credenciales: verdadero Control de acceso: exposición de encabezados: header1,header2 |
Envía el estado 200 OK con las siguientes cabeceras:
Dado que el origen, los métodos y las cabeceras del navegador coinciden con la política CORS configurada en webMethods API Gateway. |
| 5 | Origen: http://test2.com Método de solicitud de control de acceso: POST Encabezados de solicitud de control de acceso: test1 |
Control de acceso - Permitir origen: http://test1.com Métodos permitidos para el control de acceso: POST Access-Control-Allow-Headers: test1, test2 Control de acceso - Edad máxima: 100 Control de acceso: permitir credenciales: verdadero Control de acceso: exposición de encabezados: header1,header2 Además, si ha especificado los orígenes javascript en la aplicación como http://test2.com |
Envía el estado 200 OK con las siguientes cabeceras:
Aunque la cabecera de origen del navegador no coincide con la política CORS configurada, coincide con los orígenes javascript configurados en la aplicación. |
solicitud CORS
Una solicitud CORS es una solicitud HTTP que incluye una cabecera Origen. Cuando webMethods API Gateway recibe la solicitud CORS, la cabecera Origin de la solicitud CORS se comprueba con Access-Control-Allow-Origin configurada en la política CORS; si coincide, API Gateway permite el acceso a los recursos.
El siguiente diagrama de flujo explica el flujo de la solicitud CORS recibida en webMethods API Gateway.

La siguiente tabla proporciona detalles sobre varios casos de uso de la petición CORS originada desde el navegador y cómo webMethods API Gateway responde a cada solicitud CORS.
| # | Cabeceras de solicitud CORS del navegador | Política CORS configurada en webMethods API Gateway | webMethods API Gateway envía la respuesta correspondiente al navegador |
|---|---|---|---|
| 1 | Origen: http://test.com |
Control de acceso - Permitir origen: http://test2.com Métodos permitidos para el control de acceso: POST, GET, PUT Access-Control-Allow-Headers: test1,test2 Control de acceso - Edad máxima: 100 Control de acceso: permitir credenciales: verdadero Control de acceso: exposición de encabezados: header1,header2 |
Envía el estado 403 Specified Origin is not allowed , ya que la cabecera Origen ( http://test.com ) del navegador no coincide con el Access-Control-Allow-Origin ( http://test2.com ) configurado en la política CORS. |
| 2 | Origen: http://test2.com |
Control de acceso - Permitir origen: http://test2.com Métodos permitidos para el control de acceso: POST, GET, PUT Access-Control-Allow-Headers: test1,test2 Control de acceso - Edad máxima: 100 Control de acceso: permitir credenciales: verdadero Control de acceso: exposición de encabezados: header1,header2 |
Envía el estado 200 OK con las siguientes cabeceras:
Dado que la cabecera Origen ( http://test2.com ) del navegador coincide con la política CORS Access-Control-Allow-Origin ( http://test2.com ) configurada en webMethods API Gateway. |
| 3 | Origen: http://test2.com Método de solicitud de control de acceso: POST Access-Control-Request-Headers: test1 |
Control de acceso - Permitir origen: http://test1.com Métodos permitidos para el control de acceso: POST Access-Control-Allow-Headers: test1,test2 Control de acceso - Edad máxima: 100 Control de acceso: permitir credenciales: verdadero Control de acceso: exposición de encabezados: header1,header2 Además, si ha especificado los orígenes javascript en la aplicación como http://test2.com |
Envía el estado 200 OK con las siguientes cabeceras:
Aunque la cabecera de origen del navegador no coincide con la política CORS configurada, coincide con los orígenes javascript configurados en la aplicación. |
- Si el servicio nativo soporta el mecanismo CORS y no ha configurado la política CORS en API Gateway, entonces webMethods API Gateway pasa al modo de seguridad pass-through y reenvía la petición CORS al servicio nativo.
- Si el servicio nativo soporta el mecanismo CORS y si también ha configurado la política CORS en API Gateway, entonces webMethods API Gateway tiene prioridad en la gestión de la solicitud CORS.
.