ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
基本: window.location.origin
ブラウザ JavaScript で「プロトコル + ホスト + ポート」のベース URL を取得するには window.location.origin を使います。
// 例: 現在 http://127.0.0.1:8000/users/123 にいる場合
const baseUrl = window.location.origin;
console.log(baseUrl);
// → "http://127.0.0.1:8000"
// URL を結合する場合(末尾スラッシュなしなので / を付ける)
const apiUrl = baseUrl + '/api/users';
console.log(apiUrl);
// → "http://127.0.0.1:8000/api/users"
location オブジェクトの全プロパティ
用途に応じて使い分けます。例として https://example.com:8080/users/123?tab=profile#info にいる場合:
| プロパティ | 値 | 説明 |
|---|---|---|
location.href | https://example.com:8080/users/123?tab=profile#info | URL 全体 |
location.origin | https://example.com:8080 | プロトコル + ホスト + ポート |
location.protocol | https: | 末尾コロン込み |
location.host | example.com:8080 | ホスト + ポート |
location.hostname | example.com | ホストのみ(ポートなし) |
location.port | 8080 | ポート番号(デフォルトポートは空) |
location.pathname | /users/123 | パス |
location.search | ?tab=profile | クエリ文字列(? 込み) |
location.hash | #info | フラグメント(# 込み) |
SSR (Next.js / Nuxt) では window が undefined
Next.js の getServerSideProps やコンポーネントの最上位、Nuxt の setup で window.location.origin を呼ぶと ReferenceError: window is not defined になります。
// ❌ NG: SSR でエラー
const baseUrl = window.location.origin;
// ✅ OK: typeof でガード
const baseUrl = typeof window !== 'undefined'
? window.location.origin
: process.env.NEXT_PUBLIC_BASE_URL;
// ✅ OK: useEffect 内で取得(クライアントのみ実行される)
useEffect(() => {
setBaseUrl(window.location.origin);
}, []);
サーバ側で URL を組み立てたいときは、環境変数 NEXT_PUBLIC_BASE_URL / NUXT_PUBLIC_BASE_URL 等にベース URL を入れておくのが定石です。
IE11 対応のポリフィル
window.location.origin は IE11 で未サポート。レガシー対応が必要なら以下のポリフィルを入れます:
if (!window.location.origin) {
window.location.origin = window.location.protocol + '//' +
window.location.hostname +
(window.location.port ? ':' + window.location.port : '');
}
サブパス配下のアプリケーション
例えば https://example.com/myapp/ 配下にデプロイしたアプリで API パスを組み立てる場合、origin だけでは /myapp が抜けます。HTML の <base href="/myapp/"> や、ビルド時にベースパスを埋め込む方式で対応:
// Vite: import.meta.env.BASE_URL を使う
const baseUrl = window.location.origin + import.meta.env.BASE_URL;
// → "https://example.com/myapp/"
// Vue Router / React Router でも同じ思想
// 環境変数からベースパスを取り、location.origin と結合する
新しい URL API
URL の組み立てや解析には URL コンストラクタが便利です。手動の文字列結合より安全:
const u = new URL(window.location.href);
console.log(u.origin); // "https://example.com:8080"
console.log(u.searchParams.get('tab')); // "profile"
// API URL を組み立てる
const apiUrl = new URL('/api/users/123', window.location.origin);
apiUrl.searchParams.set('fields', 'id,name');
console.log(apiUrl.toString());
// → "https://example.com:8080/api/users/123?fields=id%2Cname"
よくあるハマりどころ
- 末尾スラッシュ:
originは末尾なし、hrefはパス次第。結合時の重複に注意 - localhost と 127.0.0.1: ブラウザは別オリジン扱い。CORS 設定ではどちらも許可するか統一する
- http と https の混在: HTTPS ページから HTTP API を叩くと Mixed Content でブロック
- ポート省略時: デフォルトポート (80/443) なら
location.portは空文字 - iframe の中:
window.location.originは親ではなく iframe 自身の origin を返す
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?