2025/10/27 Apache2.4+PHP 8.4を使用して、WebAPIのサーバープログラムを作りました。 呼び出し元のURLと、Apacheが稼働しているサーバが同じドメインにある場合のみ応答し、それ以外の場合は応答を拒否したいです。 WebAPIのサーバープログラムの中でリクエスト元のRefererをチェックする以外の方法で、コーディングせずにこれを実現できますか? ------ 方法�@:mod_rewriteで Referer ヘッダを制限する(一般的) ------ 設定例(httpd.conf または .htaccess) ------ RewriteEngine On # 自分のドメインを許可(例:example.com) RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com/ [NC] # Refererが空のリクエストも許可したい場合(拒否したい場合は下記の行を書かない) RewriteCond %{HTTP_REFERER} !^$ RewriteRule ^ - [F] ------ 基本の流れ RewriteRule が適用される前に、直前の RewriteCond がすべて評価される。 すべての条件が「真(true)」だった場合のみ、その RewriteRule が実行される。 1つでも条件が「偽(false)」なら、その RewriteRule はスキップされて、次のルール(もしあれば)に進みます。 ※[NC]は大文字小文字を区別しない意味 RewriteCond %{HTTP_REFERER} でRefererを判定 [F] フラグで 403 Forbidden 応答を返す example.com の部分を自社ドメインに置き換えてください。 ------ 方法�B:ネットワーク的に制限(LAN・社内限定など) ------ もしWebAPIサーバが社内など限定環境なら、 ApacheのRequireディレクティブでアクセス元IPを制限する方法もあります。 ------ Require ip 10.0.0.0/8 ------ ------ 社内システムで、従業員IDを渡すとその従業員のプロフィールを数行の文章で返すWeb APIを作りたいです。 リクエストはGETとPOSTのどちらのメソッドが適していますか。 ------ GET https://intra.mycompany.local/api/employee?id=E12345 ------ { "employee_id": "E12345", "employee_name": "山田太郎", "profile": [ "2005年に入社し、営業第1課に配属。", "新規顧客開拓を中心に実績を上げ、2012年に主任に昇進。", "現在は営業第2課の課長としてチームを統括している。" ] } ------ header('Content-Type: application/json; charset=utf-8'); $data = [ 'employee_id' => 'E12345', 'employee_name' => '山田太郎', 'profile' => [ '2005年に入社し、営業第1課に配属。', '新規顧客開拓を中心に実績を上げ、2012年に主任に昇進。', '現在は営業第2課の課長としてチームを統括している。' ] ]; echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); ------ jsonを返すWebAPIをfile_get_contentsで読み込めるか? ------ 読み込めます。 ------