文档

0034-00000007

更新时间:

问题描述

跨域资源共享CORS(Cross-Origin Resource Sharing)配置XML中MaxAgeSeconds参数有误。

问题原因

您通过PutBucketCors接口来配置某个Bucket的跨域资源共享规则,但是您提交的XML配置中某条规则中的MaxAgeSeconds参数有误,有可能是在同一个<CORSRule>中出现了多次MaxAgeSeconds参数,或者MaxAgeSeconds参数的值不是正整数。

问题示例

比如您发起了如下请求:

PUT /?cors HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 186
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6q**************:77Dv****************
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration>
    <CORSRule>
      <AllowedOrigin>*</AllowedOrigin>
      <AllowedMethod>PUT</AllowedMethod>
      <AllowedHeader>Authorization</AllowedHeader>
      <MaxAgeSeconds>-1</MaxAgeSeconds>
    </CORSRule>
    <ResponseVary>true</ResponseVary>
</CORSConfiguration>

MaxAgeSeconds参数用于指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间。单位为秒,必须是正整数。上述XML配置中MaxAgeSeconds节点值为-1不符合规范,就会得到该错误。

解决方案

在通过PutBucketCors接口来配置某个Bucket跨域资源共享规则时确保您提交的XML配置正确无误,特别是保证MaxAgeSeconds节点在同一个<CORSRule>中只出现一次,且值为正整数。

PUT /?cors HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 186
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6q**************:77Dv****************
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration>
    <CORSRule>
      <AllowedOrigin>*</AllowedOrigin>
      <AllowedMethod>PUT</AllowedMethod>
      <AllowedMethod>GET</AllowedMethod>
      <AllowedHeader>Authorization</AllowedHeader>
      <MaxAgeSeconds>100</MaxAgeSeconds>
    </CORSRule>
    <ResponseVary>false</ResponseVary>
</CORSConfiguration>

相关文档