选项Cors方法无法预防

时间:2014-11-18 13:07:00

标签: java servlets httprequest cors

在system.config文件中,我删除了OPTIONS方法声明,并且我等待该请求必须阻止哪些方法类型为OPTIONS。如果我从system.config文件中删除其他方法类型,则会阻止具有它们的请求,但我的控件不适用于OPTIONS方法类型。

system.config文件;

 CORS_ALLOW_GENERIC_HTTP_REQUESTS=true
 CORS_ALLOW_ORIGIN="*"
 CORS_SUPPORTED_METHODS=" HEAD, PUT,POST, GET, DELETE"
 CORS_SUPPORTED_HEADERS="*"   

我的doOptions方法;

protected void doOptions(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  corsRequestHandler.tagRequest(request);
  CORSRequestType type = CORSRequestType.detect(request);
  if (type.equals(CORSRequestType.PREFLIGHT)) {
     try {
        corsRequestHandler.handlePreflightRequest(request, response);
     }
     catch (InvalidCORSRequestException e) {
        logger.error("Invalid CORS Request Exception: " + e.getMessage());
     }
     catch (CORSOriginDeniedException e) {
        logger.error("CORS Origin Denied Exception: " + e.getMessage());
     }
     catch (UnsupportedHTTPMethodException e) {
        logger.error("Unsupported HTTP Method Exception: " + e.getMessage());
     }
     catch (UnsupportedHTTPHeaderException e) {
        logger.error("Unsupported HTTP Header Exception: " + e.getMessage());
     }
  }
}

我没有想法,请告知。

1 个答案:

答案 0 :(得分:0)

由于OPTIONS是预先发出的请求,因此无法阻止。与简单请求不同,“预检”请求首先通过OPTIONS方法向另一个域上的资源发送HTTP请求,以确定实际请求是否可以安全发送。

有关详细信息,请访问here