ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 の や、ビルド時にベースパスを埋め込む方式で対応:
// 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 と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?