Configuração CORS de um bucket
Funções
O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo padrão proposto pelo World Wide Web Consortium (W3C) e permite solicitações de origem cruzada de clientes. Para solicitações padrão de páginas da Web, os scripts e conteúdos de um site não podem interagir com os de outro site devido à existência da Política de Mesma Origem (SOP).
O OBS permite que os buckets armazenem recursos estáticos da Web. Os buckets do OBS podem servir como recursos do site se forem usados corretamente (para obter detalhes, consulte Configuração da hospedagem de site estático para um bucket). Um site no OBS pode responder a solicitações de outros sites somente depois que o CORS estiver configurado corretamente.
Os cenários típicos de aplicativos são os seguintes:
- Com o suporte do CORS, você pode usar JavaScript e HTML5 para construir aplicações web e acessar diretamente os recursos do OBS sem a necessidade de usar servidores proxy para transferência.
- Você pode ativar a função de arrastar do HTML 5 para fazer upload de arquivos diretamente para o OBS (com o progresso do upload exibido) ou atualizar o conteúdo do OBS usando aplicativos da web.
- Hospeda páginas web externas, folhas de estilo e aplicações HTML 5 em diferentes origens. Fontes da Web ou imagens no OBS podem ser compartilhadas por vários sites.
Para executar essa operação, você deve ter a permissão PutBucketCORS. Por padrão, somente o proprietário do bucket pode executar essa operação. O proprietário do bucket pode conceder a permissão a outros usuários configurando a política do bucket ou a política do usuário.
Sintaxe da solicitação
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
PUT /?cors HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Content-Length: length Date: date Authorization: authorization Content-SHA256: SHA256 <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration> <CORSRule> <ID>id</ID> <AllowedMethod>method</AllowedMethod> <AllowedOrigin>origin</AllowedOrigin> <AllowedHeader>header</AllowedHeader> <MaxAgeSeconds>seconds</MaxAgeSeconds> <ExposeHeader>header</ExposeHeader> </CORSRule> </CORSConfiguration> |
Parâmetros de solicitação
Esta solicitação não contém nenhum parâmetro.
Cabeçalhos de solicitação
Essa solicitação usa cabeçalhos comuns e cabeçalhos de solicitação CORS. Para obter mais detalhes, consulte Tabela 3 e Tabela 1.
Elementos de solicitação
Nesta solicitação, você deve configurar o CORS de buckets no corpo da solicitação. A configuração do ciclo de vida é especificada como XML com elementos descritos em Tabela 2.
Elemento |
Descrição |
Obrigatório |
---|---|---|
CORSConfiguration |
Nó raiz do CORSRule e sua capacidade não pode exceder 64 KB. Tipo: Container Antepassado: nenhum |
Sim |
CORSRule |
Regras do CORS. CORSConfiguration pode conter um máximo de 100 regras. Tipo: Container Antepassado: CORSConfiguration |
Sim |
ID |
Identificador único de uma regra. O valor pode conter no máximo 255 caracteres. Tipo: string Antepassado: CORSRule |
Não |
AllowedMethod |
Método permitido por uma regra CORS Tipo: string Os valores possíveis são GET, PUT, HEAD, POST e DELETE. Antepassado: CORSRule |
Sim |
AllowedOrigin |
Uma origem que é permitida por uma regra CORS. É uma cadeia de caracteres e pode conter um caractere curinga (*), e permite um caractere curinga (*) no máximo. Tipo: string Antepassado: CORSRule |
Sim |
AllowedHeader |
Cabeçalhos permitidos em uma solicitação PutBucketCORS por meio do cabeçalho Access-Control-Request-Headers. Se uma solicitação contiver cabeçalhos Access-Control-Request, apenas uma solicitação CORS que corresponda à configuração de AllowedHeader será considerada como uma solicitação válida. Cada AllowedHeader pode conter no máximo um curinga (*) e não pode conter espaços. Tipo: string Antepassado: CORSRule |
Não |
MaxAgeSeconds |
Indica o tempo de resposta do CORS que pode ser armazenado em cache por um cliente. É expresso em segundos. Cada CORSRule pode conter apenas um MaxAgeSeconds. Pode ser definido para um valor negativo. Tipo: número inteiro Antepassado: CORSRule |
Não |
ExposeHeader |
Um cabeçalho adicional nas respostas do CORS. O cabeçalho fornece informações adicionais para os clientes. Não pode conter espaços. Tipo: string Antepassado: CORSRule |
Não |
Sintaxe da resposta
1 2 3 4 |
HTTP/1.1 status_code Date: date Content-Length: length |
Cabeçalhos de resposta
A resposta à solicitação usa cabeçalhos comuns. Para mais detalhes, consulte Tabela 1.
Elementos de resposta
Esta resposta não contém nenhum elemento.
Respostas de erro
Nenhuma resposta de erro especial é retornada. Para obter detalhes sobre respostas de erro, consulte Tabela 2.
Solicitação de exemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
PUT /?cors HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 03:51:52 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:lq7BGoqE9yyhdEwE6KojJ7ysVxU= Content-SHA256: ogX9qClMrVJUBiUSIKDFM0qO41jJM0I5SCN55/OtMyI= Content-Length: 617 <?xml version="1.0" encoding="utf-8"?> <CORSConfiguration> <CORSRule> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>HEAD</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedOrigin>www.example.com</AllowedOrigin> <AllowedHeader>AllowedHeader_1</AllowedHeader> <AllowedHeader>AllowedHeader_2</AllowedHeader> <MaxAgeSeconds>100</MaxAgeSeconds> <ExposeHeader>ExposeHeader_1</ExposeHeader> <ExposeHeader>ExposeHeader_2</ExposeHeader> </CORSRule> </CORSConfiguration> |
Resposta de exemplo
1 2 3 4 5 6 7 |
HTTP/1.1 100 Continue HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF26000001643627112BD03512FC94A4 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSYi6wLC4bkrvuS9sqnlRjxK2a5Fe3ry Date: WED, 01 Jul 2015 03:51:52 GMT Content-Length: 0 |