# OpenAPI proxy の使用

GitBook はプロキシできます **テストする** リクエストをプロキシできるため、API サーバーが CORS をサポートしていなくても動作します。

### これが存在する理由

API サーバーが CORS ヘッダーで許可しない限り、ブラウザーはクロスオリジンリクエストをブロックします。CORS を設定していないと、 **テストする** リクエストはブラウザーで失敗します。プロキシはこれらのリクエストを GitBook 経由でサーバー側にルーティングし、その制限を回避します。

### スペック全体でプロキシを有効にする

追加する `x-enable-proxy: true` OpenAPI スペックのルートに。

<pre class="language-yaml"><code class="lang-yaml">openapi: '3.0.3'
<strong>x-enable-proxy: true
</strong>info:
  title: Example API
  version: '1.0.0'
servers:
  - url: https://api.example.com
</code></pre>

### 特定の操作で有効または無効にする

追加する `x-enable-proxy` を操作に指定します。

<pre class="language-yaml"><code class="lang-yaml">openapi: '3.0.3'
info:
  title: Example API
  version: '1.0.0'
servers:
  - url: https://api.example.com
paths:
  /reports:
    get:
      summary: レポート一覧
<strong>      x-enable-proxy: true
</strong>      responses:
        '200':
          description: OK
    post:
      summary: レポートを作成
<strong>      x-enable-proxy: false
</strong>      responses:
        '201':
          description: 作成済み
</code></pre>

{% hint style="info" %}
オペレーションレベル `x-enable-proxy` はルートレベルの値よりも優先されます。
{% endhint %}

### プロキシがサポートするもの

GitBook はすべての `HTTP` メソッド（`GET`, `POST`, `PUT`, `DELETE`, `PATCH`）と、ヘッダー、Cookie、リクエスト本文を転送します。

### セキュリティ

プロキシは、スペックの `servers` 配列に記載された URL にのみリクエストを転送します。任意の URL にアクセスするためには使用できません。&#x20;

{% hint style="info" %}
テストしたいすべてのベース URL が `servers` 配列に含まれていることを確認してください。URL が記載されていない場合、 **テストする** そのホストへのリクエストはプロキシをバイパスします。
{% endhint %}
