クロスドメインエラーの修正
最終更新日 2018-08-16
ホストされているドメイン以外のドメインでホストされているコンテンツを Adobe Flash などのブラウザプラグインで再生する際に、しばしばアクセス許可が求められます。クロスドメインポリシーファイルは、この許可を与えるもので、コンテンツの再生を可能にするために必要であることが多々あります。このガイドでは、シンセティックな crossdomain.xml レスポンスを作成し、クロスドメインエラーを解決する方法について説明します。
Error #2048
は、crossdomain.xml の問題を示す一般的なサインです。
- Fastly コントロールパネルにログインします。
- Home ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
- Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
- Content をクリックします。Content ページが表示されます。
-
Set up advanced response ボタンをクリックします。Create a synthetic response ページが表示されます。
- 以下の要領で Create a synthetic response フィールドに入力します。
- Name フィールドに、人間可読なレスポンス名を入力します。例:
crossdomain.xml
。 - Status メニューから、クライアントに返す HTTP コードを選択します。例:
200 OK
。 - MIME Type フィールドに、レスポンスの MIME タイプとして
text/x-cross-domain-policy
を入力します。 - Response フィールドに、リクエストに応答するための正しい形式で書かれた crossdomain.xml の内容を追加します。詳細については、クロスドメインの許容と制限 を参照してください。
- Name フィールドに、人間可読なレスポンス名を入力します。例:
- Create ボタンをクリックします。作成された新しいレスポンスは、レスポンスの一覧に表示されます。
- 新しいレスポンス名の右側にある Attach a condition リンクをクリックします。Create a new condition ウィンドウが開きます。
- 以下の要領で Create a new condition 設定画面の各フィールドに入力します。
- Type メニューから、Request を選択します。
- Name フィールドに、人間可読のレスポンス条件名を入力します。例:
crossdomain.xml
。 - Apply if フィールドに
req.url == "/crossdomain.xml"
と入力します。
- Save and apply to をクリックし、新しいリクエスト条件を作成します。
- Activate ボタンをクリックして設定変更をデプロイします。
クロスドメインの許容と制限
crossdomain.xml ポリシーファイルは、ホストされているドメイン以外のドメインにてコンテンツを再生するための権限をこれらのブラウザプラグインに与えます。このファイルは通常 crossdomain.xml
という名前で、デフォルトでホストされているドメインのルートディレクトリに配置されます。このファイルを使用し、リクエストされたコンテンツを再生する際のアクセスの許容度や制限度を定義します。
以下のポリシー例では、foo.example.com
および bar.example.com
ドメインがデータをプルし、www.example.com
ドメインが X-foo
ヘッダー経由でデータをプッシュすることを許可しています。
1
2
3
4
5
6
7
8
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="foo.example.com" secure="true"/>
<allow-access-from domain="bar.example.com" secure="true"/>
<allow-http-request-headers-from domain="www.example.com" headers="X-foo" secure="true"/>
</cross-domain-policy>
この例では、secure="true"
を使用し、HTTPS によるアクセスを強制しています。secure="false"
を使用すれば、HTTP 経由のアクセスが許可されます。