Obtaining the CORS Configuration of a Bucket (SDK for Node.js)
If you have any questions during development, post them on the Issues page of GitHub.
Function
Cross-origin resource sharing (CORS) is a mechanism defined by the World Wide Web Consortium (W3C) that allows a web application program in one domain to access resources located in another one. For normal web page requests, website scripts and contents in one domain cannot interact with those in another because of Same Origin Policies (SOPs). OBS supports CORS rules that allow the resources in OBS to be requested by other domains.
This API returns the CORS configuration of a bucket.
Restrictions
- To obtain the CORS configuration of a bucket, you must be the bucket owner or have the required permission (obs:bucket:GetBucketCORS in IAM or GetBucketCORS in a bucket policy). For details, see Introduction to OBS Access Control, IAM Custom Policies, and Creating a Custom Bucket Policy.
Method
ObsClient.getBucketCors(params)
Request Parameters
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
Bucket |
string |
Yes |
Explanation: Bucket name. Restrictions:
Value range: The value can contain 3 to 63 characters. Default value: None |
Responses
Type |
Description |
---|---|
NOTE:
This API returns a Promise response, which requires the Promise or async/await syntax. |
Explanation: Returned results. For details, see Table 3. |
Parameter |
Type |
Description |
---|---|---|
CommonMsg |
Explanation: Common information generated after an API call is complete, including the HTTP status code and error code. For details, see Table 4. |
|
InterfaceResult |
Explanation: Results outputted for a successful call. For details, see Table 5. Restrictions: This parameter is not included if the value of Status is greater than 300. |
Parameter |
Type |
Description |
Status |
number |
Explanation: HTTP status code returned by the OBS server. Value range: A status code is a group of digits indicating the status of a response. It ranges from 2xx (indicating successes) to 4xx or 5xx (indicating errors). For details, see Status Codes. |
Code |
string |
Explanation: Error code returned by the OBS server. |
Message |
string |
Explanation: Error description returned by the OBS server. |
HostId |
string |
Explanation: Request server ID returned by the OBS server. |
RequestId |
string |
Explanation: Request ID returned by the OBS server. |
Id2 |
string |
Explanation: Request ID2 returned by the OBS server. |
Indicator |
string |
Explanation: Error code details returned by the OBS server. |
Parameter |
Type |
Description |
---|---|---|
RequestId |
string |
Explanation: Request ID returned by the OBS server |
CorsRules |
CorsRule[] |
Explanation: CORS rule list of the bucket. For details, see CorsRule. |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
ID |
string |
No if used as a request parameter |
Explanation: CORS rule ID. Restrictions: None Value range: The value must contain 1 to 255 characters. Default value: None |
AllowedMethod |
string[] |
Yes if used as a request parameter |
Explanation: The allowed HTTP methods (types of operations on buckets and objects) for a cross-origin request. Restrictions: None Value range: The following HTTP methods are supported:
Default value: None |
AllowedOrigin |
string[] |
Yes if used as a request parameter |
Explanation: The origin that is allowed to access the bucket. Restrictions: Domain name of the origin. Each origin can contain at most one wildcard character (*). Example: https://*.vbs.example.com Value range: None Default value: None |
AllowedHeader |
string[] |
No if used as a request parameter |
Explanation: The allowed cross-origin request headers. Only CORS requests matching the allowed headers are valid. Restrictions: Each header can contain at most one wildcard character (*). Spaces, ampersands (&), colons (:), less-than signs (<), and full-width characters are not allowed. Value range: None Default value: None |
MaxAgeSeconds |
number |
No if used as a request parameter |
Explanation: How long the response can be cached on a client Restrictions: Each CORS rule can contain at most one MaxAgeSeconds. Value range: 0 to (231 – 1), in seconds Default value: 100 |
ExposeHeader |
string[] |
No if used as a request parameter |
Explanation: It specifies additional headers a CORS rule allows in a response, which can be used to provide extra information to clients. By default, a browser can access only headers Content-Length and Content-Type. If the browser needs to access other headers, you need to configure them as additional headers. Restrictions: Spaces, asterisks (*), ampersands (&), colons (:), less-than signs (<), and full-width characters are not allowed. Value range: None Default value: None |
Code Examples
This example returns the CORS configuration of bucket examplebucket.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
// Import the OBS library. // Use npm to install the client. const ObsClient = require("esdk-obs-nodejs"); // Use the source code to install the client. // var ObsClient = require('./lib/obs'); // Create an instance of ObsClient. const obsClient = new ObsClient({ // Obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways. Using hard coding may result in leakage. // Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/eu/usermanual-ca/ca_01_0003.html. access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // (Optional) If you use a temporary AK/SK pair and a security token to access OBS, you are advised not to use hard coding, which may result in information leakage. You can obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways. // security_token: process.env.SECURITY_TOKEN, // Enter the endpoint corresponding to the region where the bucket is located. EU-Dublin is used here in this example. Replace it with the one currently in use. server: "https://obs.eu-west-101.myhuaweicloud.eu" }); async function getBucketCors() { try { const params = { // Specify the bucket name. Bucket: "examplebucket", }; // Obtain the CORS configuration of the bucket. const result = await obsClient.getBucketCors(params); if (result.CommonMsg.Status <= 300) { console.log("Get bucket(%s) CORS configuration successful!", params.Bucket); console.log("RequestId: %s", result.CommonMsg.RequestId); for (let k = 0; k < result.InterfaceResult.CorsRules.length; k++) { const corsRule = result.InterfaceResult.CorsRules[i]; console.log("ID:%s, AllowedOrigin:%s, AllowedMethod:%s, AllowedHeader:%s, MaxAgeSeconds:%d, ExposeHeader:%s", corsRule.ID, corsRule.AllowedOrigin.join("|"), corsRule.AllowedMethod.join("|"), corsRule.AllowedHeader.join("|"), corsRule.MaxAgeSeconds, corsRule.ExposeHeader.join("|") ); }; return; }; console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response."); console.log("Status: %d", result.CommonMsg.Status); console.log("Code: %s", result.CommonMsg.Code); console.log("Message: %s", result.CommonMsg.Message); console.log("RequestId: %s", result.CommonMsg.RequestId); } catch (error) { console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network."); console.log(error); }; }; getBucketCors(); |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.