簡體   English   中英

跨域Ajax POST到Web-API始終返回空響應

[英]cross domain ajax POST to web-api always return empty response

我想將HTML表單發布到web-api。

如果我在其他域中使用jQuery執行ajax POST,一切正常,我收到200, 在firebug和response選項卡中,我收到空白響應,如下圖所示。 這是我的jQuery代碼:

var formData = new FormData($('form')[0]);
                var response = '';
                $.ajax({
                    url: 'http://localhost:2143/api/controller',
                    type: 'POST',
                    // Form data
                    data: formData,
                    //Options to tell JQuery not to process data or worry about content-type
                    cache: false,
                    contentType: false,
                    processData: false,
                    success : function(text)
                     {
                         response = text;
                         alert(response);
                     }
                });

請幫我...

由於瀏覽器內置的same origin policy restriction ,因此不允許執行跨域AJAX調用。 您有幾種可能的解決方法:

  1. JSONP這里的想法是您的服務器將JSON響應包裝在回調中。 這僅適用於GET請求,因此從您試圖發送POST請求的角度來看,它可能不適合您的情況。 您可以使用自定義JsonpMediaTypeFormatter ,如this similar post所示。
  2. CORS服務器應發送特殊的Access-Control-Allow-Origin響應HTTP標頭。 缺點是較舊的瀏覽器可能不支持它。 這是一篇blog post涵蓋了更多詳細信息。
  3. 服務器端網橋。 如果前兩種技術由於約束而對您不起作用,則可能是您在托管JavaScript的域上有一個服務器端腳本,該腳本將充當您的域和托管API的遠程域之間的代理。 在這種情況下,您會將AJAX請求發送到您自己的域,該域將依次調用遠程API並將結果返回給客戶端。

暫無
暫無

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

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