You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/03/24 02:04:01 UTC

[james-project] 05/05: JAMES-3078 Add cors headers for all requests

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 4905fdf19cef55cfa5fa6d433310f4ce284a9764
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Mar 23 14:04:19 2020 +0700

    JAMES-3078 Add cors headers for all requests
---
 .../org/apache/james/jmap/http/AuthenticationRoutes.java     |  6 +++---
 .../main/java/org/apache/james/jmap/http/DownloadRoutes.java |  8 ++++----
 .../main/java/org/apache/james/jmap/http/JMAPApiRoutes.java  |  2 +-
 .../main/java/org/apache/james/jmap/http/UploadRoutes.java   |  2 +-
 .../jmap/src/main/java/org/apache/james/jmap/JMAPRoutes.java | 12 ++++++++----
 5 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java
index 586da3a..6f02ec8 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java
@@ -98,9 +98,9 @@ public class AuthenticationRoutes implements JMAPRoutes {
     @Override
     public HttpServerRoutes define(HttpServerRoutes builder) {
         return builder
-            .post(AUTHENTICATION, this::post)
-            .get(AUTHENTICATION, this::returnEndPointsResponse)
-            .delete(AUTHENTICATION, this::delete)
+            .post(AUTHENTICATION, JMAPRoutes.corsHeaders(this::post))
+            .get(AUTHENTICATION, JMAPRoutes.corsHeaders(this::returnEndPointsResponse))
+            .delete(AUTHENTICATION, JMAPRoutes.corsHeaders(this::delete))
             .options(AUTHENTICATION, CORS_CONTROL);
     }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/DownloadRoutes.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/DownloadRoutes.java
index b9ff099..d307858 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/DownloadRoutes.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/DownloadRoutes.java
@@ -92,10 +92,10 @@ public class DownloadRoutes implements JMAPRoutes {
 
     @Override
     public HttpServerRoutes define(HttpServerRoutes builder) {
-        return builder.post(DOWNLOAD_FROM_ID, this::postFromId)
-            .get(DOWNLOAD_FROM_ID, this::getFromId)
-            .post(DOWNLOAD_FROM_ID_AND_NAME, this::postFromIdAndName)
-            .get(DOWNLOAD_FROM_ID_AND_NAME, this::getFromIdAndName)
+        return builder.post(DOWNLOAD_FROM_ID, JMAPRoutes.corsHeaders(this::postFromId))
+            .get(DOWNLOAD_FROM_ID, JMAPRoutes.corsHeaders(this::getFromId))
+            .post(DOWNLOAD_FROM_ID_AND_NAME, JMAPRoutes.corsHeaders(this::postFromIdAndName))
+            .get(DOWNLOAD_FROM_ID_AND_NAME, JMAPRoutes.corsHeaders(this::getFromIdAndName))
             .options(DOWNLOAD_FROM_ID, CORS_CONTROL)
             .options(DOWNLOAD_FROM_ID_AND_NAME, CORS_CONTROL);
     }
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/JMAPApiRoutes.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/JMAPApiRoutes.java
index 5451a8f..c37ac88 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/JMAPApiRoutes.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/JMAPApiRoutes.java
@@ -80,7 +80,7 @@ public class JMAPApiRoutes implements JMAPRoutes {
 
     @Override
     public HttpServerRoutes define(HttpServerRoutes builder) {
-        return builder.post(JMAP, this::post)
+        return builder.post(JMAP, JMAPRoutes.corsHeaders(this::post))
             .options(JMAP, CORS_CONTROL);
     }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/UploadRoutes.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/UploadRoutes.java
index 7589cbb..921a5dc 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/UploadRoutes.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/UploadRoutes.java
@@ -81,7 +81,7 @@ public class UploadRoutes implements JMAPRoutes {
 
     @Override
     public HttpServerRoutes define(HttpServerRoutes builder) {
-        return builder.post(UPLOAD, this::post)
+        return builder.post(UPLOAD, JMAPRoutes.corsHeaders(this::post))
             .options(UPLOAD, CORS_CONTROL);
     }
 
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPRoutes.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPRoutes.java
index 4c76901..565c9c1 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPRoutes.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPRoutes.java
@@ -36,10 +36,14 @@ import reactor.netty.http.server.HttpServerRoutes;
 public interface JMAPRoutes {
     HttpServerRoutes define(HttpServerRoutes builder);
 
-    BiFunction<HttpServerRequest, HttpServerResponse, Publisher<Void>> CORS_CONTROL = (req, res) -> res.header("Access-Control-Allow-Origin", "*")
-        .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
-        .header("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept")
-        .send();
+    BiFunction<HttpServerRequest, HttpServerResponse, Publisher<Void>> CORS_CONTROL = corsHeaders((req, res) -> res.send());
+
+    static BiFunction<HttpServerRequest, HttpServerResponse, Publisher<Void>> corsHeaders(BiFunction<HttpServerRequest, HttpServerResponse, Publisher<Void>> action) {
+        return (req, res) -> action.apply(req, res
+            .header("Access-Control-Allow-Origin", "*")
+            .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
+            .header("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept"));
+    }
 
     Logger logger();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org