开发者社区 问答 正文

关于Bucket的操作之如何实现PutBucketWebsite?

Put Bucket Website操作可以将一个bucket设置成静态网站托管模式。

请求语法PUT /?website HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Authorization: SignatureValue

<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration>
    <IndexDocument>
        <Suffix>index.html</Suffix>
    </IndexDocument>
    <ErrorDocument>
        <Key>errorDocument.html</Key>
    </ErrorDocument>
</WebsiteConfiguration>





请求元素(Request Elements)

名称描述是否必须
ErrorDocument子元素Key的父元素类型: 容器父元素: WebsiteConfiguration
IndexDocument子元素Suffix的父元素. 类型: 容器父元素: WebsiteConfiguration
Key返回404错误时使用的文件名 类型:字符串 父元素: WebsiteConfiguration.ErrorDocument有条件:当ErrorDocument设置时,必需有条件
Suffix返回目录URL时添加的索引文件名,不要为空,也不要包含"/"。例如索引文件设置为index.html,则访问:oss-cn-hangzhou.aliyuncs.com/mybucket/mydir/这样请求的时候默认都相当于访问oss-cn-hangzhou.aliyuncs.com/mybucket/index.html 类型:字符串父元素: WebsiteConfiguration.IndexDocument
WebsiteConfiguration请求的容器 类型:容器父元素: 无


细节分析

  1. 所谓静态网站是指所有的网页都由静态内容构成,包括客户端执行的脚本,例如JavaScript;OSS不支持涉及到需要服务器端处理的内容,例如PHP,JSP,APS.NET等。
  2. 如果你想使用自己的域名来访问基于bucket的静态网站,可以通过域名CNAME来实现。具体配置方法见3.4节:自定义域名绑定。
  3. 用户将一个bucket设置成静态网站托管模式时,必须指定索引页面,错误页面则是可选的。
  4. 用户将一个bucket设置成静态网站托管模式时,指定的索引页面和错误页面是该bucket内的一个object。
  5. 在将一个bucket设置成静态网站托管模式后,对静态网站根域名的匿名访问,OSS将返回索引页面;对静态网站根域名的签名访问,OSS将返回Get Bucket结果。
  6. 如果用户上传了Content-MD5请求头,OSS会计算body的Content-MD5并检查一致性,如果不一致,将返回InvalidDigest错误码。


示例


[backcolor=transparent]请求示例: PUT /?website HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 209
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc:KU5h8YMUC78M30dXqf3JxrTZHiA=

<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration>
<IndexDocument>
<Suffix>index.html</Suffix>
</IndexDocument>
<ErrorDocument>
<Key>error.html</Key>
</ErrorDocument>
</WebsiteConfiguration>


[backcolor=transparent]返回示例: HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Fri, 04 May 2012 03:21:12 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS

展开
收起
青衫无名 2017-10-20 10:38:14 2408 分享 版权
阿里云 AI 助理回答

您已经详细描述了如何使用阿里云对象存储服务(OSS)的Put Bucket Website操作来将一个Bucket配置为静态网站托管模式。这里我再简要总结一下关键点和步骤,以便于理解和操作:

操作目的

  • 将OSS中的Bucket设置为静态网站托管服务器,可以直接通过HTTP或HTTPS访问其中的静态网页内容。

请求语法

PUT /?website HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Authorization: SignatureValue

<?xml version="1.0" encoding="UTF-8"?>
<WebsiteConfiguration>
    <IndexDocument>
        <Suffix>index.html</Suffix>
    </IndexDocument>
    <ErrorDocument>
        <Key>error.html</Key>
    </ErrorDocument>
</WebsiteConfiguration>

关键元素说明

  • WebsiteConfiguration:必需的根元素,包含Bucket作为静态网站的所有配置。
  • IndexDocument/Suffix:指定默认的索引文件名,如index.html,当访问Bucket根目录时自动加载此页面。
  • ErrorDocument/Key:可选,指定404错误页面的文件名,如error.html,在请求的资源不存在时返回。

注意事项

  • 静态网站不支持服务器端脚本执行,仅限HTML、CSS、JavaScript等静态内容。
  • 可以通过CNAME记录将自定义域名绑定到Bucket,实现通过自有域名访问静态网站。
  • 对Bucket进行匿名访问时,会直接显示索引页面;签名访问则返回Bucket列表。
  • 上传请求时若包含Content-MD5头,OSS会校验其与实际内容的MD5一致性。

示例

上述请求示例展示了如何通过API调用设置Bucket为静态网站托管,并指定了索引文档和错误文档。响应码200 OK表示操作成功。

实施步骤

  1. 准备静态内容:确保您的Bucket中已上传了所需的索引文件(如index.html)和错误页面(如果设置了的话)。
  2. 构造请求:根据上述请求格式,使用正确的AccessKeyId、AccessKeySecret以及Endpoint生成签名(Authorization头),并准备好XML配置体。
  3. 发送请求:通过HTTP PUT方法向Bucket发起请求,URL中包含?website参数。
  4. 验证结果:检查响应状态码是否为200 OK,并通过浏览器访问Bucket的公网地址验证静态网站是否生效。

完成以上步骤后,您的Bucket就成功配置为静态网站托管模式,可以通过指定的URL访问了。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答