我已经使用JAX-RS(Jersey 2.0)实现了一个小的REST API,并且正在使用AJAX调用该API,GET和POST都可以正常工作,但是当我调用任何PUT或DELETE方法时,得到的只有以下内容错误信息:
加载资源失败:服务器的响应状态为403(禁止)
这是Java中 DELETE 方法的示例:
@Path("/deleteSomething") @DELETE @Consumes("application/json") public void delete(String json) throws ParseException { JSONParser parser = new JSONParser(); Object obj = parser.parse( json ); JSONObject object=(JSONObject)obj; String id = (String) object.get("id"); System.out.println("ID : " + id); //DO SOMETHING HERE }
这是使用AJAX的Javascript调用:
function deleteSomethingAjax() { $.ajax({ url: API_URI + "/deleteSomething", //API_URI is the API's uri contentType : 'application/json', data: idToJSON(), // this function just returns a JSON obj {"id":"myID"} type: 'DELETE', success : function(data, textStatus, jqXHR) { alert( "Fine!" ); }, error : function(jqXHR, data, textStatus, errorThrown) { alert('WOOPS, something wrent wrong...'); } }); }
任何帮助都感激不尽!!谢谢!!
这个问题与CORSFilter设置有关,我在 web.xml 文件中将其设置为错误。这是CORSFilter的一部分,在 web.xml 内进行了适当设置:
<filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <init-param> <param-name>cors.allowed.origins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.allowed.methods</param-name> <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value> </init-param> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>