1. 程式人生 > >AJAX跨域訪問(get、post請求)

AJAX跨域訪問(get、post請求)

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>