Após adicionar seu domínio ao Alibaba Cloud CDNDCDN, configure cabeçalhos de resposta HTTP personalizados para ativar 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 do 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 páginas da web iniciem requisições para acessar e carregar recursos de domínios ou subdomínios diferentes, ou por meio de protocolos e 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 requisiçã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 requisição para
http://example.com/index.htmlao servidorexample.com.O servidor
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 requisição para
http://example.org/image_01.pngao servidorexample.org.O servidor
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 (*), o que indica que requisições de origem cruzada de todas as origens são permitidas. Em seguida, o navegador exibe a resposta.
CORS ativado
Um cliente envia uma requisiçã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 requisição para
http://example.org/image_01.pngao CDN DCDN. A requisição inclui o cabeçalhoOrigin:http://example.com.O CDN DCDN recebe a requisição e compara o valor do cabeçalho
Originda requisição com o valor configurado deAccess-Control-Allow-Origin. Especifique um ou mais valores, ou um nome de domínio curinga paraAccess-Control-Allow-Origin. O cabeçalhoAccess-Control-Allow-Originsó é retornado ao cliente se os valores dos cabeçalhos mencionados 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, o que indica que requisiçõ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, as configurações do console do CDNDCDN terão prioridade. 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 requisições dinâmicas de API.
Ativar o 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 abaixo para especificar as origens permitidas para requisiçõ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
É obrigatório definir este parâmetro como
Access-Control-Allow-Originpara habilitar o 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 qualquer origem.Origem única especificada: Uma única origem (nome de domínio) definida restringe o acesso aos recursos apenas a essa origem.
CORS ativado: Configure um curinga, uma única origem, múltiplas origens específicas ou nomes de domínio com curinga.
Curinga (
*): Permite o acesso aos recursos de todas as origens.Origem única especificada: Restringe o acesso aos recursos apenas à origem (nome de domínio) indicada.
Múltiplas origens especificadas: Várias origens (nomes de domínio) separadas por vírgulas (
,) permitem o acesso aos recursos dentro do intervalo definido.Nomes de domínio com curinga: Um nome de domínio com curinga autoriza o acesso aos recursos 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 perderá o efeito.
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 requisiçõ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 requisições do usuário e definem um valor para o cabeçalhoAccess-Control-Allow-Originseguindo estas regras:Correspondência por curinga: Se o cabeçalho
Access-Control-Allow-Originfor definido como asterisco (),Access-Control-Allow-Origin:será retornado, independentemente de as requisições do usuário conterem o cabeçalhoOriginou do valor 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 requisiçã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 requisiçã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 com curinga: Se o cabeçalho
Access-Control-Allow-Originfor definido como um nome de domínio com curinga, o valor do cabeçalhoOriginserá comparado com esse padrão.
Se você definir o parâmetro CORS como Enable e o valor desejado para 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 requisiçõ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. O cabeçalho retornado pelo servidor de origem e o cabeçalho adicionado à resposta são ambos enviados ao cliente.
No: Cabeçalhos duplicados não são permitidos. O cabeçalho retornado pelo servidor de origem é substituído pelo cabeçalho adicionado à resposta.
No
Exemplos de configuração
Exemplo 1
Quando o valor do cabeçalho de resposta para CORS for definido como uma ou mais origens específicas separadas por vírgulas (,):
Se o valor do cabeçalho
Originna requisiçã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 requisiçã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 requisiçã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 requisição de usuário com o cabeçalho Origin
http://aliyundoc.com(devido a incompatibilidade de protocolo: a requisição do usuário usa HTTP, enquanto o CDNDCDN está configurado para HTTPS).Se o cabeçalho
Originde uma requisiçã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 for definido como um domínio curinga, o POP verificará se o valor de Origin no cabeçalho da requisição corresponde ao padrão curinga.
No CDN/DCDN, defina: Access-Control-Allow-Origin: http://*.aliyundoc.com.
A requisiçã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 requisiçã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 requisição de usuário com o cabeçalho Origin
https://demo.aliyundoc.comporque a requisição utiliza o protocolo HTTPS, mas o CDNDCDN está configurado com o protocolo HTTP.
P: Como usar o curl para verificar se o cabeçalho Access-Control-Allow-Origin do CDN está funcionando?
Envie uma requisição GET com um cabeçalho Origin usando curl -svo /dev/null e inspecione a saída detalhada em busca dos cabeçalhos de resposta. Se o cabeçalho Access-Control-Allow-Origin aparecer na resposta com o valor esperado (por exemplo, * ou seu domínio especificado), sua configuração CORS estará funcionando corretamente. Caso o cabeçalho esteja ausente, revise suas regras personalizadas de cabeçalho de resposta no console do CDN e as configurações de CORS do seu servidor de origem.
curl -svo /dev/null https://img.anleme.cc/agent/dl1.jpg -H 'origin:https://am.anleme.cc'