質問編集履歴

1

情報追加

2023/02/08 04:46

投稿

unity3dbigginer
unity3dbigginer

スコア65

test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,34 @@
31
31
 
32
32
  ### 最後に
33
33
  Javaにはしばしば触れているのですが、通信関連に疎いので、実力不足ですが、ご教授のほどよろしくお願いいたします。
34
+
35
+
36
+ ### 情報提供語試したこと
37
+
38
+ 情報提供いただきありがとうございます。
39
+ Access-Control-Allow-Originは1つのみ設定できることを理解しました。
40
+ そのため、ホワイトリストを予め用意し、その中に含まれるURLの場合はセットするようコードを組みました。
41
+
42
+ ```java
43
+ public static void setHeaderMethod(HttpServletRequest req, HttpServletResponse res){
44
+ String Origin = req.getParameter(Origin);
45
+ if(isContainWhitelist(Origin) || Origin == null){
46
+ if(Origin != null){
47
+ res.setHeader("Access-Control-Allow-Origin", Origin);
48
+ }
49
+ res.setHeader("Access-Control-Allow-Methods", ...);
50
+ res.setHeader("Access-Control-Allow-Credentials", ...);
51
+ res.setHeader("Access-Control-Allow-Headers", ...);
52
+ ・・・
53
+ }
54
+ ```
55
+
56
+ コードの説明
57
+ isContainWhitelist(Origin)で、あらかじめ用意したホワイトリストに含まれるURLかどうかチェックしています。
58
+ また、本来はif条件はisContainWhitelist(Origin)のみでよいと思うのですが、null時も中に通す必要がある事情があるため、一度nullも通しています。
59
+ 中のif分でOriginがnullでない場合はAccess-Control-Allow-Originを動的セットしています。
60
+
61
+ しかし、
62
+ Originがnullとなるリクエストを送った場合、Access-Control-Allow-Originにnullがセットされてしまいます。
63
+
64
+ Originがnullの場合は、Access-Control-Allow-Originにnullはセットしたくないのですが、そこがうまくいっておりません。