From 2bab5603636f7e0f8d19523b386825619bf0b718 Mon Sep 17 00:00:00 2001 From: Peter Powers Date: Thu, 4 May 2017 10:40:28 -0600 Subject: [PATCH 1/2] vs760 option missing from index docs --- htdocs/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/index.html b/htdocs/index.html index 8555c72e..d9d84902 100644 --- a/htdocs/index.html +++ b/htdocs/index.html @@ -40,7 +40,7 @@

Service: hazard

  • longitude (-360..360) °
  • latitude [-90..90] °
  • imt (intensity measure type) [PGA, SA0P2, SA1P0]
  • -
  • vs30 [180, 259, 360, 537, 1150, 2000] m/s
  • +
  • vs30 [180, 259, 360, 537, 760, 1150, 2000] m/s
  • @@ -65,7 +65,7 @@

    Service: deagg

  • longitude (-360..360) °
  • latitude [-90..90] °
  • imt (intensity measure type) [PGA, SA0P2, SA1P0]
  • -
  • vs30 [180, 259, 360, 537, 1150, 2000] m/s
  • +
  • vs30 [180, 259, 360, 537, 760, 1150, 2000] m/s
  • returnperiod [1..4000] years
  • From 5b062a44d774ea2fca74e375451e717584f475d1 Mon Sep 17 00:00:00 2001 From: Peter Powers Date: Thu, 4 May 2017 10:43:10 -0600 Subject: [PATCH 2/2] updated response headers in all services --- .../usgs/earthquake/nshm/www/AdminService.java | 2 +- .../usgs/earthquake/nshm/www/DeaggService.java | 2 +- .../earthquake/nshm/www/HazardService.java | 18 +++--------------- .../usgs/earthquake/nshm/www/RateService.java | 2 +- .../usgs/earthquake/nshm/www/ServletUtil.java | 16 ++++++++++++++++ .../earthquake/nshm/www/SpectraService.java | 2 +- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/gov/usgs/earthquake/nshm/www/AdminService.java b/src/gov/usgs/earthquake/nshm/www/AdminService.java index 7f6d9e7c..a59a43a5 100644 --- a/src/gov/usgs/earthquake/nshm/www/AdminService.java +++ b/src/gov/usgs/earthquake/nshm/www/AdminService.java @@ -23,7 +23,7 @@ public class AdminService extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setContentType("application/json; charset=UTF-8"); + ServletUtil.setCorsHeadersAndContentType(response); response.getWriter().print("{\"hello\" : \"admin\"}"); } } diff --git a/src/gov/usgs/earthquake/nshm/www/DeaggService.java b/src/gov/usgs/earthquake/nshm/www/DeaggService.java index c1633292..6f50fee9 100644 --- a/src/gov/usgs/earthquake/nshm/www/DeaggService.java +++ b/src/gov/usgs/earthquake/nshm/www/DeaggService.java @@ -77,7 +77,7 @@ protected void doGet( HttpServletResponse response) throws ServletException, IOException { - response.setContentType("application/json; charset=UTF-8"); + ServletUtil.setCorsHeadersAndContentType(response); String query = request.getQueryString(); String pathInfo = request.getPathInfo(); diff --git a/src/gov/usgs/earthquake/nshm/www/HazardService.java b/src/gov/usgs/earthquake/nshm/www/HazardService.java index 83b0c93b..921df8d4 100644 --- a/src/gov/usgs/earthquake/nshm/www/HazardService.java +++ b/src/gov/usgs/earthquake/nshm/www/HazardService.java @@ -20,6 +20,7 @@ import gov.usgs.earthquake.nshm.www.meta.Status; import java.io.IOException; +import java.util.Collections; import java.util.Date; import java.util.EnumMap; import java.util.List; @@ -115,7 +116,7 @@ protected void doGet( HttpServletResponse response) throws ServletException, IOException { - response.setContentType("application/json; charset=UTF-8"); + ServletUtil.setCorsHeadersAndContentType(response); String query = request.getQueryString(); String pathInfo = request.getPathInfo(); @@ -188,7 +189,7 @@ private RequestData buildRequest(Map paramMap) { /* Reduce slash-delimited request */ private RequestData buildRequest(List params) { - + Set imts = (params.get(4).equalsIgnoreCase("any")) ? Metadata.HAZARD_IMTS : readValues(params.get(4), Imt.class); @@ -437,19 +438,6 @@ Result build() { } return new Result(url, responseListBuilder.build()); } - -// // TODO replace with XySequence.addToMap -// private static > void addOrPut( -// Map map, -// E key, -// XySequence sequence) { -// -// if (map.containsKey(key)) { -// map.get(key).add(sequence); -// } else { -// map.put(key, XySequence.copyOf(sequence)); -// } -// } } } } diff --git a/src/gov/usgs/earthquake/nshm/www/RateService.java b/src/gov/usgs/earthquake/nshm/www/RateService.java index 77039cc3..43d71f3c 100644 --- a/src/gov/usgs/earthquake/nshm/www/RateService.java +++ b/src/gov/usgs/earthquake/nshm/www/RateService.java @@ -84,7 +84,7 @@ protected void doGet( HttpServletResponse response) throws ServletException, IOException { - response.setContentType("application/json; charset=UTF-8"); + ServletUtil.setCorsHeadersAndContentType(response); String query = request.getQueryString(); String pathInfo = request.getPathInfo(); diff --git a/src/gov/usgs/earthquake/nshm/www/ServletUtil.java b/src/gov/usgs/earthquake/nshm/www/ServletUtil.java index 83c23fc1..744f0dd8 100644 --- a/src/gov/usgs/earthquake/nshm/www/ServletUtil.java +++ b/src/gov/usgs/earthquake/nshm/www/ServletUtil.java @@ -27,6 +27,7 @@ import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; +import javax.servlet.http.HttpServletResponse; import org.opensha2.calc.ValueFormat; import org.opensha2.calc.Vs30; @@ -119,6 +120,21 @@ public HazardModel call() throws Exception { } } + /* + * Because nshmp-haz-ws services may be called by both the USGS website, other + * websites, and directly by 3rd party applications, reponses generated by + * direct requests will not have the necessary header information that would + * be required by security protocols for web requests. This means that any + * initial direct request will pollute intermediate caches with a response + * that a browser will deem invalid. + */ + static void setCorsHeadersAndContentType(HttpServletResponse response) { + response.setContentType("application/json; charset=UTF-8"); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "*"); + response.setHeader("Access-Control-Allow-Headers", "accept,origin,authorization,content-type"); + } + private static HazardModel loadModel(ServletContext context, Model model) { Path path; URL url; diff --git a/src/gov/usgs/earthquake/nshm/www/SpectraService.java b/src/gov/usgs/earthquake/nshm/www/SpectraService.java index f81379a6..0f92c35d 100644 --- a/src/gov/usgs/earthquake/nshm/www/SpectraService.java +++ b/src/gov/usgs/earthquake/nshm/www/SpectraService.java @@ -133,7 +133,7 @@ public class SpectraService extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setContentType("application/json; charset=UTF-8"); + ServletUtil.setCorsHeadersAndContentType(response); String query = request.getQueryString(); String pathInfo = request.getPathInfo();