跨域資源共用(Cross-origin resource sharing,簡稱CORS)允許Web端的應用程式訪問不屬於本域的資源。OSS提供跨域資源共用介面,方便您控制跨域訪問的許可權。
更多關於跨域資源共用的介紹,請參見開發指南中的設定跨域訪問和API參考中的PutBucketcors。跨域資源共用的完整代碼請參見GitHub。
設定跨域資源共用規則
以下代碼用於設定指定儲存空間的跨域資源共用規則:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 建立OSSClient執行個體。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
bucketName := "<yourBucketName>"
rule1 := oss.CORSRule{
AllowedOrigin: []string{"*"},
AllowedMethod: []string{"PUT", "GET"},
AllowedHeader: []string{},
ExposeHeader: []string{},
MaxAgeSeconds: 200,
}
rule2 := oss.CORSRule{
AllowedOrigin: []string{"http://www.a.com", "http://www.b.com"},
AllowedMethod: []string{"POST"},
AllowedHeader: []string{"Authorization"},
ExposeHeader: []string{"x-oss-test", "x-oss-test1"},
MaxAgeSeconds: 100,
}
// 設定跨域資源共用規則。
err = client.SetBucketCORS(bucketName, []oss.CORSRule{rule1, rule2})
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
獲取跨域資源共用規則
以下代碼用於獲取跨域資源共用規則:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 建立OSSClient執行個體。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
bucketName := "<yourBucketName>"
// 獲取跨域資源共用規則。
corsRes, err := client.GetBucketCORS(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Bucket CORS:", corsRes.CORSRules)
}
刪除跨域資源共用規則
以下代碼用於刪除指定儲存空間的所有跨域資源共用規則:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 建立OSSClient執行個體。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
bucketName := "<yourBucketName>"
// 刪除跨域資源共用規則。
err = client.DeleteBucketCORS(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}