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

相關文章
相關標籤/搜索