當咱們用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