Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-07 GMT+08:00

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.

Tabela 1 Cabeçalho da solicitação CORS

Cabeçalho

Descrição

Obrigatório

Content-SHA256

Base64-encoded 256-bit SHA256 resumo da mensagem de acordo com SHA.

Tipo: string

Exemplo: ogX9qClMrVJUBiUSIKDFM0qO41jJM0I5SCN55/OtMyI=

Sim

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.

Tabela 2 Elementos de configuração do CORS

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