Configuración del uso compartido de recursos entre orígenes (CORS)
SE APLICA A: NoSQL
El uso compartido de recursos entre orígenes (CORS) es una característica de HTTP que permite que una aplicación web que se ejecuta en un dominio tenga acceso a recursos de otro dominio. Los exploradores web implementan una restricción de seguridad que se conoce como directiva de mismo origen que impide que una página web realice llamadas API en un dominio diferente. Sin embargo, CORS aporta un modo seguro de permitir que el dominio de origen llame a las API de otro dominio. La API para NoSQL de Azure Cosmos DB ahora admite el encabezado "allowedOrigins" de uso compartido de recursos entre orígenes (CORS). Después de habilitar la compatibilidad con CORS para la cuenta de Azure Cosmos DB, solo se evalúan las solicitudes autenticadas para determinar si se admiten según las reglas especificadas.
Puede configurar el uso compartido de recursos entre orígenes (CORS) en Azure Portal o con una plantilla de Azure Resource Manager. En cuanto a las cuentas de Azure Cosmos DB que usan la API para NoSQL, Azure Cosmos DB admite una biblioteca de JavaScript que funciona tanto en Node.js como en entornos basados en explorador. Ahora esta biblioteca puede beneficiarse de la compatibilidad con CORS al usar el modo de puerta de enlace. El uso de esta característica no requiere configuración en el lado cliente. Con compatibilidad con CORS, los recursos de un explorador pueden acceder directamente a Azure Cosmos DB desde la biblioteca de JavaScript o directamente desde la API de REST para operaciones sencillas.
Nota:
La compatibilidad con CORS solo es aplicable y es compatible con Azure Cosmos DB for NoSQL. No es aplicable a las API de Azure Cosmos DB para Cassandra, Gremlin o MongoDB, ya que estos protocolos no usan HTTP para la comunicación entre cliente y servidor.
Habilitar la compatibilidad con CORS en Azure Portal
Siga estos pasos para habilitar el uso compartido de recursos entre orígenes en Azure Portal:
Vaya a la cuenta de Azure Cosmos DB. Abra la página CORS.
Especifique una lista de orígenes separados por comas que podrán realizar llamadas entre orígenes a su cuenta de Azure Cosmos DB. Por ejemplo:
https://www.mydomain.com
,https://mydomain.com
yhttps://api.mydomain.com
. También puede usar un carácter comodín "*" para permitir todos los orígenes y, a continuación, seleccione Enviar.Nota:
Actualmente, no puede usar comodines como parte del nombre de dominio. Por ejemplo, aún no se admite el formato
https://*.mydomain.net
.
Habilitar la compatibilidad con CORS mediante la plantilla de Resource Manager
Para habilitar CORS con una plantilla de Resource Manager, agregue la sección “cors” con la propiedad “allowedOrigins” a cualquier plantilla existente. Este JSON es un ejemplo de una plantilla que crea una nueva cuenta de Azure Cosmos DB con CORS habilitado.
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"name": "[variables('accountName')]",
"apiVersion": "2019-08-01",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": "[variables('locations')]",
"databaseAccountOfferType": "Standard",
"cors": [
{
"allowedOrigins": "https://contoso.com"
}
]
}
}
Uso de la biblioteca de JavaScript para Azure Cosmos DB desde un explorador
Actualmente, la biblioteca de JavaScript para Azure Cosmos DB incluye solo la versión para CommonJS de la biblioteca con su paquete. Para usar esta biblioteca desde el explorador, debe usar una herramienta como Rollup o Webpack para crear una biblioteca compatible con el explorador. Algunas bibliotecas de Node.js deben tener objetos ficticios del explorador para ellas. Este es un ejemplo de un archivo de configuración de webpack que tiene la configuración de objetos ficticios necesaria.
const path = require("path");
module.exports = {
entry: "./src/index.ts",
devtool: "inline-source-map",
node: {
net: "mock",
tls: "mock"
},
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist")
}
};
Este es un código de ejemplo que usa TypeScript y Webpack con la biblioteca del SDK de JavaScript de Azure Cosmos DB. El ejemplo crea una aplicación de tareas pendientes que envía actualizaciones en tiempo real cuando se crean nuevos elementos.
Pasos siguientes
Para obtener información sobre otras formas de proteger la cuenta de Azure Cosmos DB, consulte los artículos siguientes: