

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

# 一般協助程式方法
<a name="general-helper-methods"></a>

此頁面提供 CloudFront Functions 內的其他協助程式方法。若要使用這些方法，請使用 JavaScript 執行期 2.0 建立 CloudFront 函數。

```
import cf from 'cloudfront';
```

如需詳細資訊，請參閱[適用於 CloudFront Functions 的 JavaScript 執行時期 2.0 功能](functions-javascript-runtime-20.md)。

## `edgeLocation` 中繼資料
<a name="edge-location-metadata"></a>

此方法需要使用 `cloudfront`模組。

**注意**  
您只能將此方法用於檢視器請求函數。對於檢視器-回應函數，此方法為空。

使用此 JavaScript 物件來取得節點機場代碼、預期的[區域節點快取](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)區域或用於處理請求的 CloudFront 伺服器 IP 地址。此中繼資料僅適用於檢視器請求事件觸發。

```
cf.edgeLocation = {
    name: SEA
    serverIp: 1.2.3.4
    region: us-west-2
}
```

`cf.edgeLocation` 物件可以包含下列項目：

**name**  
處理請求之節點的三個字母 [IATA 代碼](https://en.wikipedia.org/wiki/IATA_airport_code)。

**serverIp**  
處理請求之伺服器的 IPv4 或 IPv6 地址。

**region**  
如果發生快取遺漏，*預期*請求使用的 CloudFront Regional Edge Cache (REC)。如果預期的 REC 無法使用，且請求使用備份 REC，則不會更新此值。這不包括正在使用的 Origin Shield 位置，除非主要 REC 和 Origin Shield 是相同的位置。

**注意**  
當 CloudFront 設定為使用原始伺服器容錯移轉時，不會再次叫用 CloudFront Functions。如需詳細資訊，請參閱[透過 CloudFront 原始伺服器容錯移轉最佳化高可用性](high_availability_origin_failover.md)。

## `rawQueryString()` 方法
<a name="raw-query-string-method"></a>

此方法不需要 `cloudFront`模組。

使用 `rawQueryString()`方法將未剖析和未變更的查詢字串擷取為字串。

**請求**

```
function handler(event) {
    var request = event.request;
    const qs = request.rawQueryString();
}
```

**回應**

將傳入請求的完整查詢字串傳回為字串值，而不含前置 `?`。
+ 如果沒有查詢字串，但 `?` 存在，則函數會傳回空字串。
+ 如果沒有查詢字串且 `?` 不存在，則函數會傳回 `undefined`。

**案例 1：傳回完整查詢字串 （沒有前置 `?`)**  
傳入請求 URL： `https://example.com/page?name=John&age=25&city=Boston`  
`rawQueryString()` 傳回： `"name=John&age=25&city=Boston"`

**案例 2：傳回空字串 （當 `?` 存在但沒有參數時）**  
傳入請求 URL： `https://example.com/page?`  
`rawQueryString()` 傳回： `""`

**案例 3：`undefined`傳回 （沒有查詢字串，也沒有 `?`)**  
傳入請求 URL： `https://example.com/page`  
`rawQueryString()` 傳回： `undefined`