jquery.post是一個常用的Ajax方法,用于向服務器發送POST請求并獲得響應。但是,當使用jquery.post進行跨域請求時會遇到一些問題。
// 跨域請求
$.post('http://www.example.com/api', data, function(response) {
console.log(response);
});
跨域請求是指通過AJAX向另一個域名的服務器發送請求,因為瀏覽器的同源策略限制,普通的AJAX跨域請求會被瀏覽器攔截。
為了解決跨域請求的問題,我們可以使用JSONP和CORS兩種解決方案。
JSONP是利用script標簽的跨域特性來實現數據傳輸,缺點是只支持GET請求。
// JSONP請求
$.ajax({
url: 'http://www.example.com/api',
dataType: 'jsonp',
data: data,
success: function(response) {
console.log(response);
}
});
CORS(跨域資源共享)是一種新的跨域解決方案,可以支持GET、POST等請求方式。
在服務端需要設置Access-Control-Allow-Origin頭,允許跨域訪問。
// CORS請求
$.ajax({
url: 'http://www.example.com/api',
type: 'POST',
data: data,
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function(response) {
console.log(response);
}
});
需要注意的是,CORS請求需要瀏覽器和服務端同時支持,而且IE8和IE9不支持。