Configuración de Bucket CORS
Funciones
El intercambio de recursos de origen cruzado (Cross-origin resource sharing, CORS) es un mecanismo estándar propuesto por World Wide Web Consortium (W3C) y permite solicitudes de origen cruzado de los clientes. Para las solicitudes de páginas web estándar, los scripts y contenidos de un sitio web no pueden interactuar con los de otro sitio web debido a la existencia de la Política del Mismo Origen (Same Origin Policy, SOP).
OBS permite que los bucket almacenen recursos web estáticos. Los bucket de OBS pueden servir como recursos del sitio web si los bucket se usan correctamente (para más detalles, consulte Configuración de alojamiento estático de sitios web para un bucket). Un sitio web en OBS puede responder a las solicitudes de otros sitios web solo después de que CORS esté correctamente configurado.
Los escenarios de aplicación típicos son los siguientes:
- Con el soporte de CORS, puede usar JavaScript y HTML5 para construir aplicaciones web y acceder directamente a los recursos en OBS sin la necesidad de usar servidores proxy para la transferencia.
- Puede activar la función de arrastre de HTML 5 para cargar directamente archivos a la OBS (con el progreso de carga mostrado) o actualizar los contenidos de la OBS utilizando aplicaciones web.
- Aloja páginas web externas, hojas de estilo y aplicaciones HTML 5 en diferentes orígenes. Las fuentes web o las imágenes en OBS pueden ser compartidas por varios sitios web.
Para realizar esta operación, debe tener el permiso PutBucketCORS. De forma predeterminada, solo el propietario del bucket puede realizar esta operación. El propietario del bucket puede conceder el permiso a otros usuarios configurando la política de bucket o la política de usuario.
Sintaxis de solicitud
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 solicitud
Esta solicitud no contiene parámetros de mensaje.
Encabezados de solicitud
Esta solicitud utiliza encabezados comunes y encabezados de solicitud CORS. Para obtener más información, consulte Tabla 3 y Tabla 1.
Elementos de solicitud
En esta solicitud, debe configurar el CORS de los bucket en el cuerpo de la solicitud. La configuración del ciclo de vida se especifica como XML con los elementos descritos en Tabla 2.
Elemento |
Descripción |
Obligatorio |
---|---|---|
CORSConfiguration |
El nodo raíz de CORSRule y su capacidad no puede superar los 64 KB. Tipo: container Antepasado: ninguno |
Sí |
CORSRule |
Las reglas del CORS. CORSConfiguration puede contener un máximo de 100 reglas. Tipo: container Antepasado: CORSConfiguration |
Sí |
ID |
Identificador único de una regla. El valor puede contener un máximo de 255 caracteres. Tipo: string Antepasado: CORSRule |
No |
AllowedMethod |
Método permitido por una regla CORS Tipo: string Opciones de valor: GET, PUT, HEAD, POST, DELETE Antepasado: CORSRule |
Sí |
AllowedOrigin |
El origen permitido por una regla CORS. Es una string de caracteres y puede contener un comodín (*), y permite un comodín (*) como máximo. Tipo: string Antepasado: CORSRule |
Sí |
AllowedHeader |
Cabeceras que se permiten en una solicitud PutBucketCORS a través del encabezado Access-Control-Request-Headers. Si una solicitud contiene Access-Control-Request- Headers, solo una solicitud CORS que coincida con la configuración de AllowedHeader se considera como una solicitud válida. Cada AllowedHeader puede contener como máximo un comodín (*) y no puede contener espacios. Tipo: string Antepasado: CORSRule |
No |
MaxAgeSeconds |
Indica el tiempo de respuesta de CORS que un cliente puede almacenar en caché. Se expresa en segundos. Cada CORSRule puede contener solo un MaxAgeSeconds. Se puede establecer en un valor negativo. Tipo: integer Antepasado: CORSRule |
No |
ExposeHeader |
Un encabezado adicional en las respuestas CORS. El encabezado proporciona información adicional para los clientes. No puede contener espacios. Tipo: string Antepasado: CORSRule |
No |
Sintaxis de respuesta
1 2 3 4 |
HTTP/1.1 status_code Date: date Content-Length: length |
Encabezados de respuesta
La respuesta a la solicitud utiliza encabezados comunes. Para más detalles, consulte Tabla 1.
Elementos de respuesta
Esta respuesta no contiene elementos.
Respuestas de error
No se devuelven respuestas de error especiales. Para obtener más información sobre las respuestas de error, consulte Tabla 2.
Modelo de solicitud
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> |
Modelo de respuesta
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 |