OPTIONS Bucket
Funções
OPTIONS refere-se a pré-solicitações que são enviadas aos servidores pelos clientes. Geralmente, as solicitações são usadas para verificar se os clientes têm permissões para executar operações em servidores. Somente depois que uma pré-solicitação é retornada com sucesso, os clientes começam a executar as solicitações de acompanhamento.
O OBS permite que os buckets armazenem recursos estáticos da Web. Os buckets do OBS podem servir como recursos do site se os buckets forem usados corretamente. Nesse cenário, os buckets no OBS servem como servidores para processar pré-solicitações de OPTIONS dos clientes.
O OBS pode processar pré-solicitações de OPTIONS somente depois que o CORS estiver configurado para buckets no OBS. Para obter detalhes sobre o CORS, consulte Configuração CORS de um bucket.
Diferenças entre o bucket OPTIONS e o objeto OPTIONS
Com o objeto OPTIONS, você precisa especificar um nome de objeto no URL, mas não é necessário um nome de objeto com o bucket OPTIONS, que usa o nome de domínio do bucket como o URL. As linhas de solicitação dos dois métodos são as seguintes:
OPTIONS /object HTTP/1.1
OPTIONS / HTTP/1.1
Sintaxe da solicitação
1 2 3 4 5 6 |
OPTIONS / HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Date: date Authorization: authorization Origin: origin Access-Control-Request-Method: method |
Parâmetros de solicitação
Esta solicitação não contém nenhum parâmetro.
Cabeçalhos de solicitação
Essa solicitação usa os cabeçalhos descritos em Tabela 1.
Cabeçalho |
Descrição |
Obrigatório |
---|---|---|
Origin |
Origin da solicitação de cross-domain especificada pela pré-solicitação. Geralmente, é um nome de domínio definido em CORS. Tipo: string |
Sim |
Access-Control-Request-Method |
Um método de HTTP que pode ser usado por uma requisição. A requisição pode usar vários cabeçalhos de método. Tipo: string Os valores possíveis são GET, PUT, HEAD, POST e DELETE. |
Sim |
Access-Control-Request-Headers |
Cabeçalhos de HTTP de uma solicitação. A solicitação pode usar vários cabeçalhos de HTTP. Tipo: string |
Não |
Elementos de solicitação
Este pedido não envolve elementos.
Sintaxe da resposta
1 2 3 4 5 6 7 8 9 |
HTTP/1.1 status_code Content-Type: application/xml Access-Control-Allow-Origin: origin Access-Control-Allow-Methods: method Access-Control-Allow-Header: header Access-Control-Max-Age: time Access-Control-Expose-Headers: header Date: date Content-Length: length |
Cabeçalhos de resposta
A resposta usa os seguintes cabeçalhos, conforme descrito em Tabela 2.
Cabeçalho |
Descrição |
---|---|
Access-Control-Allow-Origin |
Se a Origin de uma solicitação atender aos requisitos de configuração CORS do servidor, a resposta conterá a Origin. Tipo: string |
Access-Control-Allow-Headers |
Se os headers de uma solicitação atenderem aos requisitos de configuração CORS do servidor, a resposta conterá os headers. Tipo: string |
Access-Control-Max-Age |
Valor de MaxAgeSeconds na configuração CORS de um servidor Tipo: inteiro |
Access-Control-Allow-Methods |
Se o Access-Control-Request-Method de uma solicitação atender aos requisitos de configuração CORS do servidor, a resposta conterá os Methods nesta rule. Tipo: string Os valores possíveis são GET, PUT, HEAD, POST e DELETE. |
Access-Control-Expose-Headers |
Valor de ExposeHeader na configuração CORS de um servidor Tipo: string |
Elementos de resposta
Esta resposta não envolve elementos.
Respostas de erro
Tabela 3 descreve possíveis erros especiais na solicitação.
Código de erro |
Descrição |
Código de status de HTTP |
---|---|---|
Bad Request |
Invalid Access-Control-Request-Method: null Quando CORS e OPTIONS são configurados para um bucket, nenhum cabeçalho de method é adicionado. |
400 BadRequest |
Bad Request |
Insufficient information. Origin request header needed. Quando CORS e OPTIONS são configurados para um bucket, nenhum cabeçalho de origin é adicionado. |
400 BadRequest |
AccessForbidden |
CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec. Quando CORS e OPTIONS são configurados para um bucket, Origin, method e Headers não correspondem a nenhuma rule. |
403 Forbidden |
Para outros erros, veja Tabela 2.
Solicitação de exemplo
1 2 3 4 5 6 7 8 |
OPTIONS / HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:02:15 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:7RqP1vjemo6U+Adv9/Y6eGzWrzA= Origin: www.example.com Access-Control-Request-Method: PUT |
Resposta de exemplo
1 2 3 4 5 6 7 8 9 10 11 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF260000016436314E8FF936946DBC9C Access-Control-Allow-Origin: www.example.com Access-Control-Allow-Methods: POST,GET,HEAD,PUT,DELETE Access-Control-Max-Age: 100 Access-Control-Expose-Headers: ExposeHeader_1,ExposeHeader_2 Access-Control-Allow-Credentials: true x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCTlYimJvOyJncCLNm5y/iz6MAGLNxTuS Date: WED, 01 Jul 2015 04:02:15 GMT Content-Length: 0 |