如何在 cloud-object-storage CORS PUT 请求中设置 Access-Control-Allow-Credentials header

How to set Access-Control-Allow-Credentials header in cloud-object-storage CORS PUT request

我在 IBM Cloud Object 商店中有一张图片,它需要授权才能获取。但这在浏览器和 iOS(我正在构建一个混合应用程序)中不起作用,但在 Android 中工作正常。调试我看到 Pre-flight 请求因 403 授权错误而失败。在 Andorid 中没有预检请求,因此图像加载正常,但浏览器和 iOS 的 webview 发出预检请求。

我需要以允许授权 Header 和选项 header 的方式设置后端 CORS。

我找到了 this 如何做到这一点,并设置了 Header 和方法,但我找不到设置 Allow-Credentails 的语法。

这是我当前用于设置 CORS 的 PUT 请求 body:

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<AllowCredentials>true</AllowCredentials>
</CORSRule>
</CORSConfiguration>

这失败了,格式错误XML。但是,如果我删除 AllowCredentials,它就可以正常工作。

所以第一个问题是 AllowCredentials 的 XML 语法是什么。

不需要Access-Control-Allow-Credentials header。一旦我将 CORS 设置为这样,OPTIONS 请求的 403 错误就消失了:

<CORSConfiguration>
    <CORSRule>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>