org.apache.catalina.filters.CorsFilter 403 Forbidden

增加了CorsFilter后,有些浏览器会报403错误。原因是这些浏览器在发送某些POST请求时(一些没有参数的POST请求)没有带Content-Type

在 checkRequestType 函数中

else if ("POST".equals(method)) {
    String mediaType = getMediaType(request.getContentType());
    if (mediaType != null) {
        if (SIMPLE_HTTP_REQUEST_CONTENT_TYPE_VALUES
                .contains(mediaType)) {
            requestType = CORSRequestType.SIMPLE;
        } else {
            requestType = CORSRequestType.ACTUAL;
        }
    }
    
    /* 没有Content类型时(mediaType == NULL)  返回的是 CORSRequestType.INVALID_CORS 后面CorsFilter的处理是给予一个403*/
}

解决方式

else if ("POST".equals(method)) {
    String mediaType = getMediaType(request.getContentType());
    if( null == mediaType ){
        requestType = CORSRequestType.SIMPLE 
    }else{
        if (SIMPLE_HTTP_REQUEST_CONTENT_TYPE_VALUES
                .contains(mediaType)) {
            requestType = CORSRequestType.SIMPLE;
        } else {
            requestType = CORSRequestType.ACTUAL;
        }
    }
}
posted @ 2017-05-15 09:54  -风筝-  阅读(2177)  评论(0编辑  收藏  举报