実現したいこと
HeaderにAccess-Control-Allow-Originを設定したいのですが、複数のURLを指定したいです。
(Access-Control-Allow-Origin : "*")ではなく、固有URLを書き並べるイメージです。
イメージ
Access-Control-Allow-Origin : https://hoge.jp, https://fuga.jp, https://hoge.fuga.jp
上記のように書き並べる、もしくは、正規表現などがJavaのsetHeaderでできるのでしたら、その方法をご教授頂きたいです。
前提
Javaアプリケーションで、Servlet内でAccess-Control-Allow-Originの設定をしています。
該当のソースコード
java
1public static void setHeaderMethod(HttpServletRequest req, HttpServletResponse res){ 2 res.setHeader("Access-Control-Allow-Origin", "https://hoge.jp, https://fuga.jp"); 3}
試したこと
上記のように、一つの文字列として複数のURLを記載したのですが、ヘッダー情報をみたところ、Access-Control-Allow-Originに設定されていたものは、1つめの「https://hoge.jp」のみとなっていました。
補足情報(FW/ツールのバージョンなど)
Java8
Windows10
最後に
Javaにはしばしば触れているのですが、通信関連に疎いので、実力不足ですが、ご教授のほどよろしくお願いいたします。
情報提供語試したこと
情報提供いただきありがとうございます。
Access-Control-Allow-Originは1つのみ設定できることを理解しました。
そのため、ホワイトリストを予め用意し、その中に含まれるURLの場合はセットするようコードを組みました。
java
1public static void setHeaderMethod(HttpServletRequest req, HttpServletResponse res){ 2 String Origin = req.getParameter(Origin); 3 if(isContainWhitelist(Origin) || Origin == null){ 4 if(Origin != null){ 5 res.setHeader("Access-Control-Allow-Origin", Origin); 6 } 7 res.setHeader("Access-Control-Allow-Methods", ...); 8 res.setHeader("Access-Control-Allow-Credentials", ...); 9 res.setHeader("Access-Control-Allow-Headers", ...); 10 ・・・ 11}
コードの説明
isContainWhitelist(Origin)で、あらかじめ用意したホワイトリストに含まれるURLかどうかチェックしています。
また、本来はif条件はisContainWhitelist(Origin)のみでよいと思うのですが、null時も中に通す必要がある事情があるため、一度nullも通しています。
中のif分でOriginがnullでない場合はAccess-Control-Allow-Originを動的セットしています。
しかし、
Originがnullとなるリクエストを送った場合、Access-Control-Allow-Originにnullがセットされてしまいます。
Originがnullの場合は、Access-Control-Allow-Originにnullはセットしたくないのですが、そこがうまくいっておりません。
回答2件
あなたの回答
tips
プレビュー