最近在使用jquery進行跨域POST請求時遇到了一些問題,經(jīng)過一番探究,終于搞定了,下面和大家分享一下
我們都知道,如果要跨域發(fā)送請求,必須在響應(yīng)頭設(shè)置CORS,讓服務(wù)端允許跨域請求。但是有時候即使設(shè)置好了,依然會出現(xiàn)post失敗的情況。
這時候我們需要檢查一下說明文檔,發(fā)現(xiàn)jquery跨域請求使用的是jsonp方式,并且只支持get請求。所以如果我們想要跨域發(fā)送post請求,就必須手動設(shè)置一下jqeury的一些參數(shù)。
$.ajax({ url: "http://example.com", type: "post", dataType: "jsonp", jsonp: "callback", data: {}, success: function (response) {}, error: function (XMLHttpRequest, textStatus, errorThrown) {} });
上面是設(shè)置post請求的代碼。其中dataType設(shè)置為jsonp,jsonp的值是callback。這兩個是必須要設(shè)置的。除此之外,如果服務(wù)端需要我們傳遞一些特定的參數(shù),我們也可以在data中傳入。
好了,我們重新發(fā)送post請求,發(fā)現(xiàn)已經(jīng)可以成功發(fā)送了。
總結(jié):實際上,jquery并不支持跨域發(fā)送post請求,但是我們可以手動修改一些參數(shù)和設(shè)置,使其支持post請求。需要注意的是,跨域請求可能會遇到一些安全性問題,為了確保系統(tǒng)的安全穩(wěn)定,建議盡量避免使用跨域。