クロスドメインからの特定URLへのアクセスのみ許可する設定
条件
- 確認ブラウザ chrome
- オリジンドメイン
http://origin.com
- クロスドメイン
https://cross.com
- 上記の条件の場合、クロスドメインからの
https://origin.com/sub/
へのアクセスのみCORS設定 - cookieも使用
apache2/conf/httpd.conf
apache2/conf/httpd.conf
<Location /sub/>
<IfModule mod_headers.c>
# リクエストのOriginヘッダが指定ドメイン場合はAccessControlAllowOrigin変数へOriginドメインをセット
SetEnvIf Origin "^https://cross.com$" AccessControlAllowOrigin=$0
SetEnvIf Origin "^http://cross.com$" AccessControlAllowOrigin=$0
# AccessControlAllowOrigin変数が空ではない場合、Access-Control-Allow-OriginレスポンスヘッダへAccessControlAllowOrigin変数の値をセット
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
# AccessControlAllowOrigin変数が空ではない場合、Access-Control-Allow-Credentialsレスポンスヘッダへtrueをセット
Header set Access-Control-Allow-Credentials true env=AccessControlAllowOrigin
</IfModule>
</Location>
テスト(設定反映前)
-
オリジン
https://origin.com
からのアクセス
-> https://origin.com/sub/
もちろんアクセス可能 -
クロスオリジン
https://cross.com
からのアクセス
-> https://cross.com -> https://origin.com/sub/
CORBが効いてリソースを表示してくれない
Access to XMLHttpRequest at 'https://origin.com/sub' from origin 'https://cross.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
テスト(設定反映後)
-
クロスオリジン
https://cross.com
からのアクセス
-> https://cross.com -> https://origin.com/sub/
リソースを表示してくれる -
Response Headers
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://cross.com