URLは通信方法と取得する対象を表す

URLは、ページなどの場所を指定する文字列です。たとえば https://shop.example:8443/orders/42?view=short#total は、接続方法、ホスト、ポート、パス、クエリー、フラグメントに分けて読めます。

ブラウザはこの指定から接続先と要求する対象を決めます。同じサーバー内の別ページか、異なる接続先かを判断するときは、URL全体の見た目より各部品を確かめることが大切です。

参照:出典 s1

スキーム・ホスト・ポートとパスを区別する

スキームの https は通信方法を示します。ホストの shop.example は接続先を識別する名前で、ドメイン名の形をしています。ポートの8443は、そのホストで通信を受け付ける番号です。省略時の既定値はHTTPSが443、HTTPが80です。

パス /orders/42 はその接続先での対象を指定し、クエリー view=short は追加の指定に使われます。#total はフラグメントで、ページ内の位置などを示します。通常のHTTPリクエストではフラグメントはサーバーへ送られず、ブラウザ側で扱います。

説明用の通信例・設定例・擬似コード

https://shop.example:8443/orders/42?view=short#total

スキーム: https
ホスト: shop.example
ポート: 8443
パス: /orders/42
クエリー: view=short
フラグメント: total

参照:出典 s1

オリジンはスキーム・ホスト・ポートの組

HTTPやHTTPSのURLでは、スキーム、ホスト、実際に使うポートがすべて一致すると同一オリジンです。パスやクエリーが違ってもオリジンは変わりません。https://shop.example/a と https://shop.example/b は同一オリジンです。

https://shop.example と https://api.shop.example はホストが違うため別オリジンです。http://shop.example はスキームが違い、https://shop.example:8443 はポートが違うため、どちらも https://shop.example とは別オリジンになります。

参照:出典 s2 / 出典 s4

同じサイトでも別オリジンになる

CookieのSameSiteで使うサイトという区切りは、オリジンと異なります。通常のドメイン名なら、スキームと登録可能なドメインを基準にします。登録可能なドメインは、co.jpのような公開接尾辞も考慮するため、末尾の二つを切り出せばよいとは限りません。

たとえば https://app.example.com と https://api.example.com は、同じスキームと登録可能なドメイン example.com を共有するため同じサイトですが、ホストが異なるので別オリジンです。CORSの許可とSameSiteのCookie送信条件を同じ判定だと考えると、設定を誤ります。

参照:出典 s2 / 出典 s3

文字列の見た目で接続先を許可しない

説明用の例として、転送先の許可を「URLに trusted.example を含むか」だけで判定する実装を考えます。攻撃者が https://trusted.example.attacker.example/ を指定すると、文字列は一致しますが実際のホストは攻撃者側です。サーバーがそのURLへ秘密情報を送れば、攻撃者が受信できます。

URLを解析する標準の機能でホストやオリジンを取り出し、許可する値と比較します。https://trusted.example@attacker.example/ の trusted.example は利用者情報の部分で、ホストは attacker.example です。名前が左側に見えるだけで信用しないようにします。

参照:出典 s1 / 出典 s2 / 出典 s4

同一オリジンかを三つの値で答える

確認問題:https://app.example.com/a と https://app.example.com:443/b は同一オリジンでしょうか。答えは同一です。省略されたHTTPSのポートも443なので、スキーム・ホスト・ポートが一致します。

一方、https://app.example.com と https://api.example.com は別オリジンです。同じ会社のサービスか、同じIPアドレスへ接続するかは、オリジンの一致条件ではありません。

参照:出典 s2

出典・確認範囲

  1. [s1] URI referenceMDN / 確認日 2026-11-03
  2. [s2] Same-origin policyMDN / 確認日 2026-11-03
  3. [s3] Using HTTP cookiesMDN / 確認日 2026-11-03
  4. [s4] URL StandardWHATWG / 確認日 2026-11-03
未確認事項・限界

通信例・設定例・被害の例は、仕組みを理解するための仮定です。特定の製品で発生した事件を示すものではありません。ブラウザやサービス固有の設定は、利用する環境の公式資料でも確認してください。