Skip to content

Commit d38bcba

Browse files
committed
Fix content negotiation
The Allow header is not for a list of methods. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept When 405 is returned, then Allow is required to be provided and be a list of methods: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/405
1 parent 180bbf1 commit d38bcba

18 files changed

+22
-22
lines changed

src/main/java/edu/illinois/library/cantaloupe/resource/AbstractResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,11 +208,11 @@ protected void doOPTIONS() {
208208
Method[] methods = getSupportedMethods();
209209
if (methods.length > 0) {
210210
response.setStatus(Status.NO_CONTENT.getCode());
211-
response.setHeader("Allow", Arrays.stream(methods)
211+
response.setHeader("Access-Control-Allow-Methods", Arrays.stream(methods)
212212
.map(Method::toString)
213213
.collect(Collectors.joining(",")));
214214
} else {
215-
response.setStatus(Status.METHOD_NOT_ALLOWED.getCode());
215+
response.setStatus(Status.NOT_ACCEPTABLE.getCode());
216216
}
217217
}
218218

src/main/java/edu/illinois/library/cantaloupe/resource/iiif/v1/InformationResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ protected final void doOPTIONS() {
5353
if (methods.length > 0) {
5454
response.setStatus(Status.NO_CONTENT.getCode());
5555
response.setHeader("Access-Control-Allow-Headers", "Authorization");
56-
response.setHeader("Allow", Arrays.stream(methods)
56+
response.setHeader("Access-Control-Allow-Methods", Arrays.stream(methods)
5757
.map(Method::toString)
5858
.collect(Collectors.joining(",")));
5959
} else {
60-
response.setStatus(Status.METHOD_NOT_ALLOWED.getCode());
60+
response.setStatus(Status.NOT_ACCEPTABLE.getCode());
6161
}
6262
}
6363

src/main/java/edu/illinois/library/cantaloupe/resource/iiif/v2/InformationResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ protected final void doOPTIONS() {
5555
if (methods.length > 0) {
5656
response.setStatus(Status.NO_CONTENT.getCode());
5757
response.setHeader("Access-Control-Allow-Headers", "Authorization");
58-
response.setHeader("Allow", Arrays.stream(methods)
58+
response.setHeader("Access-Control-Allow-Methods", Arrays.stream(methods)
5959
.map(Method::toString)
6060
.collect(Collectors.joining(",")));
6161
} else {
62-
response.setStatus(Status.METHOD_NOT_ALLOWED.getCode());
62+
response.setStatus(Status.NOT_ACCEPTABLE.getCode());
6363
}
6464
}
6565

src/main/java/edu/illinois/library/cantaloupe/resource/iiif/v3/InformationResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ protected final void doOPTIONS() {
5555
if (methods.length > 0) {
5656
response.setStatus(Status.NO_CONTENT.getCode());
5757
response.setHeader("Access-Control-Allow-Headers", "Authorization");
58-
response.setHeader("Allow", Arrays.stream(methods)
58+
response.setHeader("Access-Control-Allow-Methods", Arrays.stream(methods)
5959
.map(Method::toString)
6060
.collect(Collectors.joining(",")));
6161
} else {
62-
response.setStatus(Status.METHOD_NOT_ALLOWED.getCode());
62+
response.setStatus(Status.NOT_ACCEPTABLE.getCode());
6363
}
6464
}
6565

src/test/java/edu/illinois/library/cantaloupe/resource/LandingResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void testOPTIONS() throws Exception {
6161
assertEquals(204, response.getStatus());
6262

6363
Headers headers = response.getHeaders();
64-
List<String> methods = List.of(headers.getFirstValue("Allow").split(","));
64+
List<String> methods = List.of(headers.getFirstValue("Access-Control-Allow-Methods").split(","));
6565
assertEquals(2, methods.size());
6666
assertTrue(methods.contains("GET"));
6767
assertTrue(methods.contains("OPTIONS"));

src/test/java/edu/illinois/library/cantaloupe/resource/admin/ConfigurationResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void testOPTIONSWhenEnabled() throws Exception {
9090

9191
Headers headers = response.getHeaders();
9292
List<String> methods =
93-
List.of(StringUtils.split(headers.getFirstValue("Allow"), ", "));
93+
List.of(StringUtils.split(headers.getFirstValue("Access-Control-Allow-Methods"), ", "));
9494
assertEquals(3, methods.size());
9595
assertTrue(methods.contains("GET"));
9696
assertTrue(methods.contains("PUT"));

src/test/java/edu/illinois/library/cantaloupe/resource/api/AbstractAPIResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void testOPTIONSWhenEnabled() throws Exception {
6868

6969
Headers headers = response.getHeaders();
7070
List<String> methods =
71-
List.of(StringUtils.split(headers.getFirstValue("Allow"), ", "));
71+
List.of(StringUtils.split(headers.getFirstValue("Access-Control-Allow-Methods"), ", "));
7272
assertEquals(2, methods.size());
7373
assertTrue(methods.contains("GET"));
7474
assertTrue(methods.contains("OPTIONS"));

src/test/java/edu/illinois/library/cantaloupe/resource/api/ConfigurationResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void testOPTIONSWhenEnabled() throws Exception {
9393

9494
Headers headers = response.getHeaders();
9595
List<String> methods =
96-
List.of(StringUtils.split(headers.getFirstValue("Allow"), ", "));
96+
List.of(StringUtils.split(headers.getFirstValue("Access-Control-Allow-Methods"), ", "));
9797
assertEquals(3, methods.size());
9898
assertTrue(methods.contains("GET"));
9999
assertTrue(methods.contains("PUT"));

src/test/java/edu/illinois/library/cantaloupe/resource/api/TasksResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void testOPTIONSWhenEnabled() throws Exception {
4747

4848
Headers headers = response.getHeaders();
4949
List<String> methods =
50-
List.of(StringUtils.split(headers.getFirstValue("Allow"), ", "));
50+
List.of(StringUtils.split(headers.getFirstValue("Access-Control-Allow-Methods"), ", "));
5151
assertEquals(2, methods.size());
5252
assertTrue(methods.contains("POST"));
5353
assertTrue(methods.contains("OPTIONS"));

src/test/java/edu/illinois/library/cantaloupe/resource/iiif/v1/ImageResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ void testOPTIONSWhenEnabled() throws Exception {
586586

587587
Headers headers = response.getHeaders();
588588
List<String> methods =
589-
List.of(StringUtils.split(headers.getFirstValue("Allow"), ", "));
589+
List.of(StringUtils.split(headers.getFirstValue("Access-Control-Allow-Methods"), ", "));
590590
assertEquals(2, methods.size());
591591
assertTrue(methods.contains("GET"));
592592
assertTrue(methods.contains("OPTIONS"));

0 commit comments

Comments
 (0)