Share via


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:

  1. Navegue para a sua conta do Azure Cosmos DB. Abra a página CORS .

  2. 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.comhttps://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 a partilha de recursos entre origens com portal do Azure

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: