繁体   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