Após adicionar seu domínio ao Alibaba Cloud CDNDCDN, configure cabeçalhos de resposta HTTP personalizados para habilitar o compartilhamento de recursos de origem cruzada (CORS) e acessar recursos de diferentes origens.
O que é CORS?
O compartilhamento de recursos de origem cruzada (CORS) é uma solução padrão fornecida pelo HTML5 que permite às páginas da web acessar e carregar recursos de servidores de origem diferentes, garantindo a segurança na transmissão de dados. Para mais informações, consulte Cross-Origin Resource Sharing (CORS).
Benefícios
Por motivos de segurança, os navegadores utilizam a política de mesma origem. Essa política impede que as páginas da web iniciem solicitações para acessar e carregar recursos de domínios ou subdomínios diferentes, ou por meio de protocolos ou portas distintos. Por exemplo, example.com não consegue acessar recursos em example.org. Ao configurar o CORS, especifique cabeçalhos de resposta no servidor CDN DCDN. Se uma solicitação de acesso aos recursos do CDN DCDN contiver cabeçalhos compatíveis com as regras permitidas, será possível carregar e acessar os recursos de origem cruzada.
Como o CORS funciona
CORS desativado
Um cliente envia uma solicitação para
http://example.com/index.htmlaexample.com.example.comretorna o arquivoindex.htmlao cliente. A URL do arquivo contém a URL de um recurso de outro servidor de origem:http://example.org/image_01.png.O cliente envia uma solicitação para
http://example.org/image_01.pngaexample.org.example.orgretorna um cabeçalho de origem cruzada, comoAccess-Control-Allow-Origin: *.O cliente recebe a resposta e o navegador verifica o valor do cabeçalho. O valor é um asterisco (*), indicando que solicitações de origem cruzada de todas as origens são permitidas. Em seguida, o navegador exibe a resposta.
CORS ativado
Um cliente envia uma solicitação para
http://example.com/index.htmlao CDN DCDN.O CDN DCDN retorna o arquivo
index.htmlao cliente. A URL do arquivo contém a URL de um recurso de outro servidor de origem:http://example.org/image_01.png.O cliente envia uma solicitação para
http://example.org/image_01.pngao CDN DCDN. A solicitação inclui o cabeçalhoOrigin:http://example.com.O CDN DCDN recebe a solicitação e compara o valor do cabeçalho
Originna solicitação com o valor configurado deAccess-Control-Allow-Origin. É possível especificar um ou mais valores, ou um nome de domínio curinga paraAccess-Control-Allow-Origin. O cabeçalhoAccess-Control-Allow-Originretorna ao cliente somente se os valores dos cabeçalhos mencionados acima coincidirem.O CDN DCDN retorna um cabeçalho de origem cruzada, como
Access-Control-Allow-Origin:http://example.com, ao cliente.O cliente recebe a resposta e o navegador verifica o valor do cabeçalho. O valor é
http://example.com, indicando que solicitações de origem cruzada dehttp://example.comsão permitidas. Em seguida, o navegador exibe a resposta.
Observações de uso
Se o servidor de origem for um bucket do Object Storage Service (OSS) e o CORS estiver configurado tanto nos consoles do OSS quanto do CDNDCDN, prevalecem as configurações de CORS no console do CDNDCDN. Para mais informações sobre as configurações de CORS no console do OSS, consulte CORS.
Os cabeçalhos de resposta HTTP configurados no console do DCDN, como o cabeçalho CORS
Access-Control-Allow-Origin, aplicam-se a todos os tipos de recursos, incluindo solicitações dinâmicas de API.
Ativar CORS
Faça login no DCDN console.
No painel de navegação à esquerda, clique em Domain Names.
Na página Domain Names, localize o nome de domínio desejado e clique em Configure.
Na árvore de navegação à esquerda do nome de domínio, clique em Caching.
Clique na aba Modify Outgoing Response Header e, em seguida, clique em Add para configurar o cabeçalho de resposta HTTP que os nós do DCDN adicionam às respostas.
-
Defina os parâmetros a seguir para especificar as origens permitidas para solicitações de origem cruzada e clique em OK.

Parâmetro
Descrição
Exemplo
Operation
Defina este parâmetro como Add para utilizar o recurso CORS.
Add
Response Header
Defina este parâmetro como
Access-Control-Allow-Originpara usar o recurso CORS.Access-Control-Allow-Origin
Header Value
CORS desativado: Configure apenas um curinga ou uma única origem específica.
Curinga (
*): Um curinga configurado indica que os recursos podem ser acessados de todas as origens.Origem única especificada: Uma única origem (nome de domínio) especificada indica que os recursos podem ser acessados apenas dessa origem.
CORS ativado: Configure um curinga, uma única origem específica, múltiplas origens específicas ou nomes de domínio curinga.
Curinga (
*): Um curinga configurado indica que os recursos podem ser acessados de todas as origens.Origem única especificada: Uma única origem (nome de domínio) especificada indica que os recursos podem ser acessados apenas dessa origem.
Múltiplas origens especificadas: Várias origens (nomes de domínio) separadas por vírgulas (
,) indicam que os recursos podem ser acessados das origens dentro do intervalo especificado.Nomes de domínio curinga: Um nome de domínio curinga configurado indica que os recursos podem ser acessados de todas as origens correspondentes ao padrão especificado.
*http://www.aliyun.comhttps://aliyun.com,http://www.aliyun.comhttp://*.aliyun.com
Allow Duplicates
Yes: Cabeçalhos duplicados são permitidos. Tanto o cabeçalho retornado pelo servidor de origem quanto o cabeçalho adicionado à resposta são enviados ao cliente.
No: Cabeçalhos duplicados não são permitidos. O cabeçalho retornado pelo servidor de origem é sobrescrito pelo cabeçalho adicionado à resposta.
ImportanteAs configurações de Allow Duplicates e CORS são mutuamente exclusivas. Se você definir Allow Duplicates como Yes, a configuração de CORS torna-se inválida.
No
CORS
O parâmetro CORS só pode ser configurado se Operation estiver definido como Add e Response Header como
Access-Control-Allow-Origin.Valores válidos para CORS: Disable e Enable. Valor padrão: Disable.
Disable: Os POPs do DCDN não verificam o cabeçalho
Originnas solicitações do usuário. Nesse caso, os POPs retornam o valor configurado deAccess-Control-Allow-Origin.Enable: Os POPs do DCDN verificam o cabeçalho
Originnas solicitações do usuário e definem um valor para o cabeçalhoAccess-Control-Allow-Origincom base nas seguintes regras:Correspondência por padrão curinga: Se o cabeçalho
Access-Control-Allow-Originestiver definido como asterisco (),Access-Control-Allow-Origin:será retornado, independentemente de as solicitações do usuário conterem ou não o cabeçalhoOriginou qual valor estiver especificado nele.Correspondência exata: Especifique um ou mais valores para o cabeçalho
Access-Control-Allow-Origin. Separe múltiplos valores com vírgulas (,):Se o valor do cabeçalho
Originna solicitação do usuário corresponder a um valor do cabeçalhoAccess-Control-Allow-Origin, esse valor correspondente será retornado.Caso o valor do cabeçalho
Originna solicitação do usuário não corresponda a nenhum valor do cabeçalhoAccess-Control-Allow-Origin, o cabeçalhoAccess-Control-Allow-Originnão será retornado.
Correspondência por nome de domínio curinga: Se o cabeçalho
Access-Control-Allow-Originestiver definido como um nome de domínio curinga, o valor do cabeçalhoOriginserá comparado com esse padrão.
Se o parâmetro CORS estiver definido como Enable e o valor a ser especificado no parâmetro Header Value contiver um hífen (
-), escape o hífen (-) para%-. Exemplos:Valor original do cabeçalho de resposta:
http://doc.aliyun-example.com.Valor do cabeçalho de resposta com escape:
http://doc.aliyun%-example.com.
Enable
-
Configure os parâmetros a seguir para especificar os métodos permitidos para solicitações de origem cruzada e clique em OK.

Parâmetro
Descrição
Exemplo
Operation
Defina este parâmetro como Add.
Add
Response Header
Defina este parâmetro como
Access-Control-Allow-Methods.Access-Control-Allow-Methods
Header Value
Valores válidos:
GET,POSTePUT. Ao adicionarGET,POSTePUTsimultaneamente, separe-os com vírgulas (,).GETAllow Duplicates
Yes: Cabeçalhos duplicados são permitidos. Tanto o cabeçalho retornado pelo servidor de origem quanto o cabeçalho adicionado à resposta são enviados ao cliente.
No: Cabeçalhos duplicados não são permitidos. O cabeçalho retornado pelo servidor de origem é sobrescrito pelo cabeçalho adicionado à resposta.
No
Exemplos de configuração
Exemplo 1
Quando o valor do cabeçalho de resposta para CORS estiver definido como uma ou mais origens específicas separadas por vírgulas (,):
Se o valor do cabeçalho
Originna solicitação do usuário corresponder exatamente a uma das origens especificadas, o POP do CDNDCDN responderá com o cabeçalho CORS correspondente.Caso não haja correspondência exata, o cabeçalho CORS não será incluído na resposta.
No CDN/DCDN, defina: Access-Control-Allow-Origin: http://example.com,https://aliyundoc.com.
O cabeçalho
Originda solicitação do usuário éhttp://example.com, e o Point of Presence (POP) do CDNDCDN responde comAccess-Control-Allow-Origin: http://example.com.O cabeçalho
Originna solicitação do usuário éhttps://aliyundoc.com, e o nó do CDNDCDN responde comAccess-Control-Allow-Origin: https://aliyundoc.com.O nó do CDNDCDN não responderá a uma solicitação de usuário com o cabeçalho Origin
http://aliyundoc.com(devido a incompatibilidade de protocolo: a solicitação usa HTTP, enquanto o CDNDCDN está configurado para HTTPS).Se o cabeçalho
Originde uma solicitação forhttp://aliyun.com, o POP do CDNDCDN não responderá (incompatibilidade de domínio).
Exemplo 2
Se o valor do cabeçalho de resposta para CORS estiver definido como um domínio curinga, o POP verificará se o valor de Origin no cabeçalho da solicitação corresponde ao padrão curinga.
No CDN/DCDN, defina: Access-Control-Allow-Origin: http://*.aliyundoc.com.
A solicitação do usuário contém o cabeçalho Origin
http://demo.aliyundoc.com, e o POP do CDNDCDN responde comAccess-Control-Allow-Origin: http://demo.aliyundoc.com.Caso o cabeçalho Origin de uma solicitação seja
http://demo.example.com, o POP do CDNDCDN não responderá porque o nome de domínio não corresponde.O nó do CDNDCDN não responde a uma solicitação de usuário com o cabeçalho Origin
https://demo.aliyundoc.comporque a solicitação utiliza o protocolo HTTPS, mas o CDNDCDN está configurado com o protocolo HTTP.