在 node 中使用 jquery ajax

對於前端同學來說,ajax 請求應該不會陌生。jquery 真的ajax請求做了封裝,可以通過下面的方式發送一個請求並獲取相應結果:

$.ajax({
    url: "https://echo.apipost.cn/get.php",
    data: formData,
    type: "POST",
    processData: false,
    contentType: false,
    success: function (data, status, xhr) {
        console.log(data, status, xhr)
    },
    error: function (xhr, status, error) {
        console.log(xhr, status, error)
    },
    complete: function (xhr, status) {
        console.log(xhr, status)
    }
})

但是,在 node 環境中,就需要一些其他庫實現接口發送,例如GOT、request 等。當然,也可以通過在node 中安裝 jquery 來使用上面 $.ajax 的方法,但是會有一個很要命的問題:跨域。

何爲跨域?

當一個請求url的協議、域名、端口三者之間任意一個與當前頁面url不同即爲跨域。也就是違反了“同源策略”:

同源策略是一個重要的安全策略,它用於限制一個origin的文檔或它加載的腳本如何能與另一個源的資源進行交互。能夠減少惡意文檔,減少可能被攻擊媒介。 如果兩個URL的協議、域名、端口號都相同,就稱這兩個URL同源。

瀏覽器默認兩個不同的源之間是可以互相訪問資源和操作DOM的。兩個不同的源之間若是想要訪問資源或者操作DOM,那麼會有一套基礎的安全策略的制約,我們把這稱爲同源策略。它的存在可以保護用戶隱私信息,防止身份僞造。

 

 

使用 ajax-for-node 實現 $.ajax

 ajax-for-node (https://www.npmjs.com/package/ajax-for-node)是一個在 node 環境下實現 $.ajax 的庫,它的所有參數格式和 $.ajax 完全一致。

const nodeAjax = require('ajax-for-node');

var formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 123456);

nodeAjax({
    url: "https://echo.apipost.cn/get.php",
    data: formData,
    type: "POST",
    processData: false,
    contentType: false,
    success: function (data, status, xhr) {
        console.log(data, status, xhr)
    },
    error: function (xhr, status, error) {
        console.log(xhr, status, error)
    },
    complete: function (xhr, status) {
        console.log(xhr, status)
    }
});

github:https://github.com/Apipost-Team/nodeajax

npm :https://www.npmjs.com/package/ajax-for-node

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章