簡體   English   中英

AngularJS $ http.post不適用於Chrome,僅適用於IE

[英]AngularJS $http.post doesn't work in Chrome, only IE

我正在嘗試將一個簡單的JSON對象發布到我的本地asp.net web.api服務中。

這是和平的代碼。

    createTable: function (table) {
        var res = $http.post('http://localhost:50827/api/v0.1/xxxx/create-some-table', table);
        res.success(function (data, status, headers, config) {
            alert("Sent : " + JSON.stringify({ data: data }));
        });
        res.error(function (data, status, headers, config) {
            alert("failure message: " + JSON.stringify({ data: data }));
        });
    }

Asp.Net Web Api啟用了Cors,這種代碼的安全性非常適合Internet Explorer。 但是Google的Chrome留下了錯誤:選項: http:// localhost:50827 / api / v0.1 / xxxx / create-some-table 404(未找到)

相同的webapi控制器還有其他一些GET方法,並且效果很好。

任何想法?

感謝任何幫助。

帕夫洛

因此,這似乎是一個已知問題,其中Chrome在發送實際的跨源請求之前先使用OPTIONS動詞發送“飛行前”請求。

在某些情況下,它不會發送預檢請求,但不幸的是,發送JSON並非其中一種情況。

似乎您沒有設置ASP.NET WebAPI服務器來處理這些類型的飛行前檢查請求。 可能是因為它顯然不是啟用對此功能的默認支持。

幸運的是,網絡上有很多幫助您解決此問題的幫助。 這里有兩個鏈接可幫助您入門。

相關的StackOverflow問題: Chrome中的AJAX發送選項而不是GET / POST / PUT / DELETE嗎?

如果您使用的是ASP.NET WebAPI 2,這似乎對如何正確配置CORS很有幫助

哦,我假設如果飛行前請求失敗,Chrome將不會執行正確的CORS請求。 我沒有在快速研究中看到任何地方可以確認或否認這一點,但是對我來說,這是合乎邏輯的,因為飛行前請求的全部目的是找出服務器支持哪種類型的CORS請求,或者如果完全受支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM