Configurar a Partilha de Recursos Entre Origens (CORS)
APLICA-SE A: NoSQL
A Partilha de Recursos Entre Origens (CORS) é uma funcionalidade HTTP que permite que uma aplicação Web em execução num domínio aceda a recursos noutro domínio. Os browsers implementam uma restrição de segurança conhecida como política de origem idêntica que impede uma página Web de chamar APIs num domínio diferente. No entanto, o CORS fornece uma forma segura de permitir que o domínio de origem chame APIs noutro domínio. A API para NoSQL no Azure Cosmos DB suporta agora a Partilha de Recursos Entre Origens (CORS) com o cabeçalho "allowedOrigins". Depois de ativar o suporte CORS para a sua conta do Azure Cosmos DB, apenas os pedidos autenticados são avaliados para determinar se são permitidos de acordo com as regras que especificou.
Pode configurar a definição partilha de recursos entre origens (CORS) a partir do portal do Azure ou de um modelo de Resource Manager do Azure. Para contas do Azure Cosmos DB com a API para NoSQL, o Azure Cosmos DB suporta uma biblioteca JavaScript que funciona tanto em ambientes baseados em Node.js como no browser. Esta biblioteca pode agora tirar partido do suporte CORS ao utilizar o modo de Gateway. Não é necessária nenhuma configuração do lado do cliente para utilizar esta funcionalidade. Com o suporte do CORS, os recursos de um browser podem aceder diretamente ao Azure Cosmos DB através da biblioteca JavaScript ou diretamente a partir da API REST para operações simples.
Nota
O suporte CORS só é aplicável e suportado para o Azure Cosmos DB para NoSQL. Não é aplicável às APIs do Azure Cosmos DB para Cassandra, Gremlin ou MongoDB, uma vez que estes protocolos não utilizam HTTP para comunicação cliente-servidor.
Ativar o suporte CORS a partir de portal do Azure
Siga estes passos para ativar a Partilha de Recursos Entre Origens com portal do Azure:
Navegue para a sua conta do Azure Cosmos DB. Abra a página CORS .
Especifique uma lista separada por vírgulas de origens que pode fazer chamadas entre origens para a sua conta do Azure Cosmos DB. Por exemplo, ,
https://www.mydomain.com
,https://api.mydomain.com
https://mydomain.com
. Também pode utilizar um caráter universal "*" para permitir todas as origens e selecionar Submeter.Nota
Atualmente, não pode utilizar carateres universais como parte do nome de domínio. Por exemplo,
https://*.mydomain.net
o formato ainda não é suportado.
Ativar o suporte CORS a partir de Resource Manager modelo
Para ativar o CORS com um modelo de Resource Manager, adicione a secção "cors" com a propriedade "allowedOrigins" a qualquer modelo existente. Este JSON é um exemplo de um modelo que cria uma nova conta do Azure Cosmos DB com CORS ativado.
{
"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"
}
]
}
}
Utilizar a biblioteca JavaScript do Azure Cosmos DB a partir de um browser
Atualmente, a biblioteca JavaScript do Azure Cosmos DB tem apenas a versão do CommonJS da biblioteca enviada com o respetivo pacote. Para utilizar esta biblioteca a partir do browser, tem de utilizar uma ferramenta como Rollup ou Webpack para criar uma biblioteca compatível com o browser. Algumas bibliotecas Node.js devem ter simulações de browser. Este é um exemplo de um ficheiro de configuração de webpack que tem as definições de simulação necessárias.
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")
}
};
Eis um exemplo de código que utiliza TypeScript e Webpack com a biblioteca do SDK JavaScript do Azure Cosmos DB. O exemplo cria uma aplicação Todo que envia atualizações em tempo real quando são criados novos itens.
Como melhor prática, não utilize a chave primária para comunicar com o Azure Cosmos DB a partir do browser. Em vez disso, utilize tokens de recursos para comunicar. Para obter mais informações sobre tokens de recursos, veja o artigo Proteger o acesso ao Azure Cosmos DB .
Passos seguintes
Para saber mais sobre outras formas de proteger a sua conta do Azure Cosmos DB, veja os seguintes artigos: