AJAX跨域訪問(get、post請求)
阿新 • • 發佈:2018-11-01
1、JSONP實現跨域get請求(無論請求方式是get,post或者是put等別的請求,最終都會被預設以get請求傳送)
<script type="text/javascript"> $.ajax({ url:"http://crossdomain.com/services.php", dataType:'jsonp', data:'', jsonp:'callback', success:function(result) { for(var i in result) { alert(i+":"+result[i]);//迴圈輸出a:1,b:2,etc. } }, timeout:3000 }); </script>
—類似百度有 相關更具體介紹
2、CORS 請求(可以傳送跨域的post、put、get等請求)
在JSP或者Java程式碼中設定response的響應頭
下面是是用過濾器簡單的實現跨域請求放行
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; public class TestFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse)servletResponse; response.setHeader("Access-Control-Allow-Origin","*"); response.setHeader("Access-Control-Allow-Methods","GET,POST,PUT,OPTIONS"); response.setHeader("Access-Control-Allow-Credentials","true"); chain.doFilter(request, response); System.out.println(" **********************CROS 執行了 **********************"); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
在web.xml中配置相應的攔截路徑
<filter> <filter-name>webAppW</filter-name> <filter-class>com.TestFilter</filter-class> </filter> <filter-mapping> <filter-name>webAppW</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>