Ajax JSON 跨域请求 服务(WebApi,WCF或者其他)

页面导航:首页 > 网络编程 > JavaScript > Ajax JSON 跨域请求 服务(WebApi,WCF或者其他)

Ajax JSON 跨域请求 服务(WebApi,WCF或者其他)

来源: 作者: 时间:2016-02-19 09:19 【

程式在 单台IIS下工作正常,换到域名下(负载均衡)就开开各种跨域了。研究了下,只要是符合以下条件的,基本上可以通用一种解决方案:条件是: 1 HTTP方法:GET,Head,POST之外的方
程式在 单台IIS下工作正常,换到域名下(负载均衡)就开开各种跨域了。研究了下,只要是符合以下条件的,基本上可以通用一种解决方案:
 
条件是:
 
  1. HTTP方法:GET,Head,POST之外的方法
 
  2. 使用POST方法,而且使用application/x-www-form-urlencoded, multipart/form-data, or text/plain 之外的 Content-Type,例如:以 POST 发送XML、JSON 等
 
  3. 使用自定义头
 
解决方案:
 
  移除 IIS下的OPTIONSVerbHandler Handle Mapping,
 
  或者 在WebConfig 种 添加:
 
 
 <system.webServer>
<handlers>
      <remove name="OPTIONSVerbHandler" />
      <!-- 略 -->
    </handlers>
  </system.webServer>
  再或者 直接拦截OptionS请求,
 
 
if (request.Method.Method==HttpMethod.Options.Method)
                {
                    return base.SendAsync(request, cancellationToken).ContinueWith(
                        task => { return request.CreateResponse(HttpStatusCode.OK); }
                            );
                }
 究其原因,AJAX请求时,总会先发送一个OptionS,接着才发正常的请求。而IIS默认对Options的直接拦截,不做处理,直接返回,但是未包含 Access-Control-Allow-Origin Header,所以请求失败,就没有第二次正常的请求了。
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<