在使用jquery的$.ajax跨域訪問的時候,如客戶端域名是www.test.com,而服務器端是www.test2.com,在客戶端通過ajax訪問服務器端的資源將會報跨域錯誤:
XMLHttpRequest cannot load http://www.test2.com/test.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://www.test.com' is therefore not allowed access.
ajax跨域訪問的解決方法很多,很多人推薦JSONP方法,這種方法只支持GET方式,不如POST方式安全。有興趣的可以自行搜索,這里講另外一種方法。
這時候只要在被請求的響應頭中加入下面語句:
// 指定允許其他域名訪問 header('Access-Control-Allow-Origin:*'); // 響應類型 header('Access-Control-Allow-Methods:POST'); // 響應頭設置 header('Access-Control-Allow-Headers:x-requested-with,content-type');
就可以實現跨域請求了。
Access-Control-Allow-Origin:* 表示允許任何域名跨域訪問
如果需要指定某域名才允許跨域訪問,只需把Access-Control-Allow-Origin:*改為Access-Control-Allow-Origin:允許的域名
eg:header('Access-Control-Allow-Origin:http://www.test.com');