Updated on 2024-11-13 GMT+08:00

Rewriting Response Headers (SDK for Node.js)

If you have any questions during development, post them on the Issues page of GitHub.

When downloading an object, you can rewrite some HTTP/HTTPS response headers. The following table lists rewritable response headers.

Parameter

Description

ResponseContentType

Rewrites Content-Type in HTTP/HTTPS responses.

ResponseContentLanguage

Rewrites Content-Language in HTTP/HTTPS responses.

ResponseExpires

Rewrites Expires in HTTP/HTTPS responses.

ResponseCacheControl

Rewrites Cache-Control in HTTP/HTTPS responses.

ResponseContentDisposition

Rewrites Content-Disposition in HTTP/HTTPS responses.

ResponseContentEncoding

Rewrites Content-Encoding in HTTP/HTTPS responses.

Code Examples

This code example rewrites response headers.

 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
// 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/intl/en-us/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. CN-Hong Kong is used here as an example. Replace it with the one currently in use.
  server: "https://obs.ap-southeast-1.myhuaweicloud.com"
});

async function getObject() {
  try {
    const params = {
      // Specify the bucket name.
      Bucket: "examplebucket",
      // Specify the object (example/objectname in this example).
      Key: 'example/objectname',
      // Rewrite a response header (Content-Type in this example).
      ResponseContentType : 'image/jpeg'
    };
    
    // Rewrite the response header.
    const result = await obsClient.getObject(params);
    if (result.CommonMsg.Status <= 300) {
      console.log("Get object(%s) under the bucket(%s) successful!", params.Key, params.Bucket);
      console.log("RequestId: %s", result.CommonMsg.RequestId);
      // Obtain the response header that was rewritten.
      console.log("ContentType:%s", result.InterfaceResult.ContentType)
      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);
  };
};

getObject();