跨域訪問post請求
『壹』 濡備綍POST璺ㄥ煙璇鋒眰
/**
* Jsonp for get data form backend
* */
$.JsonpRequest = function(url, successHandler) {
$.ajax({
type : "GET",
async : false,
url : url,
dataType : "jsonp",
jsonp : "jsonpCallback",
success : function(data) {
successHandler(data);
},
error : function() {
//todo
}
});
};
欏圭洰閲屾憳鍑烘潵鐨勶紝鍙浠ョ洿鎺ヨ繍琛岋紝鍚庣鐩存帴榪欐牱榪斿洖json 瀛楃︿覆鍗沖彲 jsonpCallback (" + json + ")
『貳』 post方式請求怎麼解決跨域問題
服務端設置支持跨域
主要是Access-Control-Allow-Origin頭參數,該參數用來指定允許哪個來源的域請求。服務端代碼如下:
//表示支持所有來源的域進行請求
//實際在操作過程中可以設置為指定域
header('Access-Control-Allow-Origin:*');
$data=json_encode(array("id"=>"1","name"=>"tom"));
echo$data;
對應的js代碼:
$.ajax({
type:"POST",
url:"http://127.0.0.1/~chenjiebin/mycode/php/crossdomain/header.php",
dataType:"json",
success:function(data){
console.log(data);
}
});
『叄』 jquery璺ㄥ煙鍙戦丳ost璇鋒眰璇ユ庝箞澶勭悊
POST璺ㄥ煙 瑙e喅鏂規: CORS
緇欐湇鍔$鏁版嵁澶勭悊婧愮爜娣誨姞Header澶淬
渚嬪傛垜鏄痑sp鐨勮娉曪紝鏈嶅姟絝鑾峰彇鏁版嵁浣跨敤錛
<%
Response.AddHeader "Access-Control-Allow-Origin", "*"
response.write("[{'rid':1, 'rname':'001'}, {'rid':2, 'rname': '002'}]")
%>
鏈鍦癮jax錛
$.ajax({
url:url,//榪滅▼url
async :false,
type:"POST",
success:function(data){
//var a=JSON.parse(data);
var html = "";
alert(data);
},
error:function(){
alert("error");
}
});
鏄劇ず錛
『肆』 post瀹炵幇璺ㄥ煙錛屽吋瀹規уソ鐨勶紝涓や釜緗戠珯閮芥槸鑷宸辯殑 鎬庝箞瀹炵幇
灝濊瘯浣跨敤CORS鎶鏈鍛錛熷湪浣犺璇鋒眰絝鐨勫簲鐢ㄦ湇鍔″櫒涓婄殑web.xml鏂囦歡閲屾坊鍔燾ors鐩稿叧瀛楁碉紙鍏蜂綋閰嶇疆鏍規嵁浣犵殑闇奼傦紝鎴戞祻瑙堣繃鐨勫逛簬CORS鏈哄埗浠嬬粛姣旇緝璇﹀敖鐨勪竴綃囨枃絝犳槸錛緗戦〉閾炬帴錛夛紝浣誇箣鍏佽歌法鍩熻塊棶銆俻ost鏂規硶涔熸槸鍙浠ヨ法鍩熺殑銆