You need to enable JavaScript to run this app.
Torch Object Storage

Torch Object Storage

Copy page
Download PDF
Manage Bucket Configuration
Managing Cross-Origin Resource Sharing (CORS) (Go SDK)
Copy page
Download PDF
Managing Cross-Origin Resource Sharing (CORS) (Go SDK)
You can configure Cross-Origin Resource Sharing (CORS) rules through the SDK interface. When TOS receives a cross-origin request or an OPTIONS request, it reads the corresponding CORS rules for the bucket, performs the necessary permission checks, and returns the appropriate headers to ensure the security of cross-origin data transmission. This article describes how to configure cross-region resource sharing for buckets.​
Configure Cross-Origin Resource Sharing​
warning​
Before configuring cross-origin resource sharing rules for a storage bucket, you must have the tos:PutBucketCORS permission. For detailed instructions, please refer to the Permission Configuration Guide.​
Sample Code​
The following code is used to configure the cross-origin resource sharing (CORS) rules for the bucket.​
​
package main​
​
import (​
"context"​
"fmt"​
"net/http"​
​
"github.com/volcengine/ve-tos-golang-sdk/v2/tos"​
)​
​
func checkErr(err error) {​
if err != nil {​
if serverErr, ok := err.(*tos.TosServerError); ok {​
fmt.Println("Error:", serverErr.Error())​
fmt.Println("Request ID:", serverErr.RequestID)​
fmt.Println("Response Status Code:", serverErr.StatusCode)​
fmt.Println("Response Header:", serverErr.Header)​
fmt.Println("Response Err Code:", serverErr.Code)​
fmt.Println("Response Err Msg:", serverErr.Message)​
} else if clientErr, ok := err.(*tos.TosClientError); ok {​
fmt.Println("Error:", clientErr.Error())​
fmt.Println("Client Cause Err:", clientErr.Cause.Error())​
} else {​
fmt.Println("Error:", err)​
}​
panic(err)​
}​
}​
​
func main() {​
var (​
accessKey = os.Getenv("TOS_ACCESS_KEY")​
secretKey = os.Getenv("TOS_SECRET_KEY")​
​
endpoint = "https://tos-cn-beijing.volces.com"​
region = "cn-beijing"​
​
bucketName = "*** Provide your bucket name ***"​
ctx = context.Background()​
)​
​
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))​
checkErr(err)​
corsRule1 := tos.CorsRule{​
​
AllowedOrigin: []string{"*"},​
​
AllowedMethod: []string{http.MethodGet, http.MethodPut},​
​
AllowedHeader: []string{"header1", "header2"},​
​
ExposeHeader: []string{"tos-1", "tos-2"},​
​
MaxAgeSeconds: 100,​
}​
corsRule2 := tos.CorsRule{​
AllowedOrigin: []string{"http://example.com", "http://www.volcengine.com"},​
AllowedMethod: []string{http.MethodGet, http.MethodPut},​
AllowedHeader: []string{"header1", "header2"},​
ExposeHeader: []string{"tos-1", "tos-2"},​
MaxAgeSeconds: 100,​
}​
​
putOutput, err := client.PutBucketCORS(ctx, &tos.PutBucketCORSInput{​
Bucket: bucketName,​
CORSRules: []tos.CorsRule{corsRule1, corsRule2},​
})​
checkErr(err)​
fmt.Println("PutBucketCORS Request ID:", putOutput.RequestID)​
}​
​
Retrieve Cross-Origin Resource Sharing (CORS) configuration​
warning​
Before configuring Cross-Origin Resource Sharing (CORS) rules for a storage bucket, you must have the tos:GetBucketCORS permission. For detailed instructions, please refer to the Permission Configuration Guide.​
Sample Code​
The following code is used to retrieve the Cross-Origin Resource Sharing (CORS) rules for a bucket.​
​
package main​
​
import (​
"context"​
"fmt"​
​
"github.com/volcengine/ve-tos-golang-sdk/v2/tos"​
)​
​
func checkErr(err error) {​
if err != nil {​
if serverErr, ok := err.(*tos.TosServerError); ok {​
fmt.Println("Error:", serverErr.Error())​
fmt.Println("Request ID:", serverErr.RequestID)​
fmt.Println("Response Status Code:", serverErr.StatusCode)​
fmt.Println("Response Header:", serverErr.Header)​
fmt.Println("Response Err Code:", serverErr.Code)​
fmt.Println("Response Err Msg:", serverErr.Message)​
} else if clientErr, ok := err.(*tos.TosClientError); ok {​
fmt.Println("Error:", clientErr.Error())​
fmt.Println("Client Cause Err:", clientErr.Cause.Error())​
} else {​
fmt.Println("Error:", err)​
}​
panic(err)​
}​
}​
​
func main() {​
var (​
accessKey = os.Getenv("TOS_ACCESS_KEY")​
secretKey = os.Getenv("TOS_SECRET_KEY")​
​
endpoint = "https://tos-cn-beijing.volces.com"​
region = "cn-beijing"​
​
bucketName = "*** Provide your bucket name ***"​
ctx = context.Background()​
)​
​
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))​
checkErr(err)​
​
getOutput, err := client.GetBucketCORS(ctx, &tos.GetBucketCORSInput{Bucket: bucketName})​
checkErr(err)​
fmt.Println("GetBucketCORS Request ID:", getOutput.RequestID)​
fmt.Println("CORS Length:", len(getOutput.CORSRules))​
​
for _, corsRule := range getOutput.CORSRules {​
fmt.Println("cors Rule AllowedOrigin:", corsRule.AllowedOrigin)​
fmt.Println("cors Rule AllowedHeader:", corsRule.AllowedHeader)​
fmt.Println("cors Rule ExposeHeader:", corsRule.ExposeHeader)​
fmt.Println("cors Rule AllowedMethod:", corsRule.AllowedMethod)​
fmt.Println("cors Rule MaxAgeSeconds:", corsRule.MaxAgeSeconds)​
}​
​
}​
​
Delete Cross-Origin Resource Sharing Configuration​
warning​
Before deleting the bucket's cross-origin resource sharing rules, you must have the tos:PutBucketCORS permission. For detailed instructions, please refer to the Permissions Configuration Guide.​
Sample Code​
The following code is used to delete the Cross-Origin Resource Sharing (CORS) rules of a bucket:​
​
package main​
​
import (​
"context"​
"fmt"​
​
"github.com/volcengine/ve-tos-golang-sdk/v2/tos"​
)​
​
func checkErr(err error) {​
if err != nil {​
if serverErr, ok := err.(*tos.TosServerError); ok {​
fmt.Println("Error:", serverErr.Error())​
fmt.Println("Request ID:", serverErr.RequestID)​
fmt.Println("Response Status Code:", serverErr.StatusCode)​
fmt.Println("Response Header:", serverErr.Header)​
fmt.Println("Response Err Code:", serverErr.Code)​
fmt.Println("Response Err Msg:", serverErr.Message)​
} else if clientErr, ok := err.(*tos.TosClientError); ok {​
fmt.Println("Error:", clientErr.Error())​
fmt.Println("Client Cause Err:", clientErr.Cause.Error())​
} else {​
fmt.Println("Error:", err)​
}​
panic(err)​
}​
}​
​
func main() {​
var (​
accessKey = os.Getenv("TOS_ACCESS_KEY")​
secretKey = os.Getenv("TOS_SECRET_KEY")​
​
endpoint = "https://tos-cn-beijing.volces.com"​
region = "cn-beijing"​
​
bucketName = "*** Provide your bucket name ***"​
ctx = context.Background()​
)​
​
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))​
checkErr(err)​
​
deleteOut, err := client.DeleteBucketCORS(ctx, &tos.DeleteBucketCORSInput{Bucket: bucketName})​
checkErr(err)​
fmt.Println("DeleteBucketCORS Request ID:", deleteOut.RequestID)​
}​
​
Relevant Documentation​
For more information on Cross-Origin Resource Sharing (CORS), please refer to Cross-Origin Access Settings.​
Last updated: 2025.09.19 17:30:19