javascript跨域请求RESTful Web Service

跨域请求RESTful Web Service


当咱们用js请求RESTful Web Service的时候,一般会出现跨域没法访问的问题,也就是没法正常获得咱们要的值。jsonp是个解决问题的方法。可是,咱们但愿访问RESTful Web Service就像通常的ajax方法同样,不用每一个都去搞一个jsonp和callback。这就须要咱们在服务端进行一些设置,下面我用一个简单的Filter来进行说明,其余比较复杂的状况根据本身的需求进行改动。java

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.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() {}

}

Note:web

  • Access-Control-Allow-Origin 为容许哪些Origin发起跨域请求. 这里设置为"*"表示容许全部,一般设置为全部并不安全,最好指定一下。
  • Access-Control-Allow-Methods 为容许请求的方法.
  • Access-Control-Max-Age 代表在多少秒内,不须要再发送预检验请求,能够缓存该结果
  • Access-Control-Allow-Headers 代表它容许跨域请求包含content-type头,这里设置的x-requested-with ,表示ajax请求

若是你们有什么更好的方法,求指点ajax

相关文章
相关标签/搜索