

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# util.http 中的 HTTP 協助程式
<a name="http-helpers-in-utils-http-js"></a>

`util.http` 公用程式提供協助程式方法，您可以用來管理 HTTP 請求參數和新增回應標頭。

## util.http utils 清單
<a name="http-helpers-in-utils-http-list-js"></a>

 **`util.http.copyHeaders(headers)`**  
從映射複製標頭，不包括下列受限 HTTP 標頭：  
+ transfer-encoding
+ connection
+ host
+ expect
+ keep-alive
+ upgrade
+ proxy-authenticate
+ proxy-authorization
+ te
+ content-length

**`util.http.addResponseHeader(String, Object)`**  
新增具有回應名稱 (`String`) 和值 (`Object`) 的單一自訂標頭。有下列限制：  
+ 除了 的限制標頭清單之外`copyHeaders(headers)`，標頭名稱也不符合下列任何項目：
  + Access-Control-Allow-Credentials
  + Access-Control-Allow-Origin
  + Access-Control-Expose-Headers
  + Access-Control-Max-Age
  + Access-Control-Allow-Methods
  + Access-Control-Allow-Headers
  + Vary
  + Content-Type
+ 標頭名稱不能以限制字首`x-amzn-`或 開頭`x-amz-`。
+ 自訂回應標頭的大小不能超過 4 KB。這包括標頭名稱和值。
+ 您應該為每個 GraphQL 操作定義每個回應標頭一次。不過，如果您多次定義同名的自訂標頭，最近的定義會出現在回應中。無論命名為何，所有標頭都會計入標頭大小限制。
+ 具有空白或限制名稱`(String)`或 null 值的標頭`(Object)`將被忽略，並產生新增到操作`errors`輸出的`ResponseHeaderError`錯誤。

```
export function request(ctx) {
  util.http.addResponseHeader('itemsCount', 7)
  util.http.addResponseHeader('render', ctx.args.render)
  return {}
}
```

**`util.http.addResponseHeaders(Map)`**  
將多個回應標頭新增至指定名稱`(String)`和值映射 的回應`(Object)`。為 `addResponseHeader(String, Object)`方法列出的相同限制也適用於此方法。  

```
export function request(ctx) {
  const headers = {
    headerInt: 12,
    headerString: 'stringValue',
    headerObject: {
      field1: 7,
      field2: 'string'
    }
  }
  util.http.addResponseHeaders(headers)
  return {}
}
```