Skip to content

MS_CrossDomainConnection

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

クロス ドメイン接続

概要

本命は CORS

  • 2014 年 1 月に W3C 勧告になり、
  • そして、最近は、CORS が一般的になってきた。

移行メモ(補足): CORS の仕様は 2014 年に W3C 勧告となった後、 現在は WHATWG の Fetch Standard に統合されている (W3C 側の CORS 仕様は廃止された)。

詳細

HTML/CSS/JavaScript

CORS (Cross-Origin Resource Sharing)

CORS (Cross-Origin Resource Sharing)

XDM (Cross Document Messaging)

iframe と(HTML5 の)postMessage を使った Cross Document Messaging による解決方法。

  • サーバとは iframe 経由で通信する。
  • 親コンテンツと iframe コンテンツ間の通信に postMessage を用いる。

補足: postMessage を使う場合、 送信側は targetOrigin"*" にせず具体的なオリジンを指定し、 受信側は event.origin を必ず検証すること。 これを怠ると任意のサイトからメッセージを注入できてしまう。

JSONP (JSON with padding)

  • js ファイル(正確には、script タグの src 属性)は、
    異なるドメイン上に配置されていても参照・実行できる特性を利用し、

    • 異なるドメインのサーバと、この js ファイルの src 属性を経由して通信する。
      • クライアント側で異なるドメインと通信するための script タグを動的に生成、
      • src 属性には、URL の QueryString に ?callback=parseResponse などと書く。
      • サーバーは、parseResponse({"JSON文字列"}) 的なレスポンスを返す。
      • クライアント側の Callback の引数に JSON が指定され処理できる。
  • 特徴

    • JSONP では認証との組み合わせが困難。
    • GET の URI の一部の形で付帯情報を渡す必要がある。
    • 単に、CORS の仕組みが無いだけ。

補足(最新化): JSONP は、 レスポンスがそのままスクリプトとして実行されるため、 接続先が信頼できない場合は任意コード実行に直結する。 また、Referer や Cookie が付いた GET になるため CSRF 的な情報漏洩(JSON ハイジャック)の温床でもあった。 CORS が全ブラウザで利用できる現在、 新規に JSONP を採用する理由はない

Plug-in

Silverlight

接続先のサーバに

  • clientaccesspolicy.xml
  • または crossdomain.xml

という名前の「ポリシー ファイル」を配置する。

Flash

接続先のサーバに crossdomain.xml という名前の「ポリシー ファイル」を配置する。

補足(最新化): Silverlight(2021 年サポート終了)と Flash(2020 年末で提供終了)はいずれも廃止されている。 ただし、crossdomain.xml を放置したままのサーバは今も存在し、 内容によっては(allow-access-from domain="*" など) 現在も情報漏洩の指摘対象になるため、 不要なら削除するのが望ましい。 なお、その挙動を抑止するヘッダが X-Permitted-Cross-Domain-Policies である。

参考


Tags: プログラミング, 通信技術, .NET開発, .NET Core, ASP.NET, ASP.NET Web API

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally