javascript - Spring response ajax: 403 error -


i using spring java-config abstractannotationconfigdispatcherservletinitializer instead of web.xml , spring-controller code:

@requestmapping(value = "/demo1", method = requestmethod.post) public @responsebody string demo1(httpservletrequest request, httpservletresponse response) {       string poreqid = request.getparameter("poid");     string refid = request.getparameter("refid");     string status = request.getparameter("key");     string key = poreqid+ refid+ status;     return key;     } } 

when send post jquery-ajax spring controller, jquery shows error. on jquery console:

xmlhttprequest cannot load http://192.168.1.206:8082/project1/demo1. no 'access-control-allow-origin' header present on requested resource. origin 'null' therefore not allowed access. response had http status code 403.

i have added

 @componentscan  public class corsfilter extends onceperrequestfilter {  @override protected void dofilterinternal(httpservletrequest request, httpservletresponse response, filterchain filterchain)                                 throws servletexception, ioexception {      response.addheader("access-control-allow-origin", "*");      if (request.getheader("access-control-request-method") != null &&  "options".equals(request.getmethod())) {         // cors "pre-flight" request         response.addheader("access-control-allow-methods", "get, post, put, delete");   //            response.addheader("access-control-allow-headers", "content-type");   //            response.addheader("access-control-allow-headers", request.getheader("access-control-request-headers"));         response.addheader("access-control-allow-headers", "x-requested-with,content-type");         response.addheader("access-control-max-age", "1");// 30 min     }     filterchain.dofilter(request, response);   } } 

i have nothing changed rest of code,please provide me solution.

your domains localhost , 192.168.1.206are considered different origins, , cant send ajax request different origins without additional setup.

for enabling cross origin requests in spring mvc should add filter explicitely allow request origins, applying proper headers in response, example of such filter

@component public class simplecorsfilter implements filter {      public void dofilter(servletrequest req, servletresponse res, filterchain chain) throws ioexception, servletexception {         httpservletresponse response = (httpservletresponse) res;         response.setheader("access-control-allow-origin", "*");         response.setheader("access-control-allow-methods", "post, get, options, delete");         response.setheader("access-control-max-age", "3600");         response.setheader("access-control-allow-headers", "x-requested-with");         chain.dofilter(req, res);     }      public void init(filterconfig filterconfig) {}      public void destroy() {}  } 

and more reading on topic can find here

you can remove @component , use filter in more traditional way, declaring in web.xml

<filter>     <filter-name>cors</filter-name>     <filter-class>your.package.corsfilter</filter-class> </filter>  <filter-mapping>     <filter-name>cors</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping> 

Comments