• Ajax JSON 跨域请求 WebApi WCF 或者服务


    前提是已经有解决了基本跨域的情况,而不仅仅是用了以下方法就能解决跨域,如果有时间,会整理好一般跨域的情况,更新至这篇文章上。

    直接来干货。

    程式在 单台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>
    View Code

      再或者 直接拦截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,所以请求失败,就没有第二次正常的请求了。

    原创文章,转载请声明来在:http://www.cnblogs.com/rockyyue/p/4087260.html, 谢谢大家!

  • 相关阅读:
    Kali下的内网劫持(三)
    Kali下的内网劫持(四)
    Kali下的内网劫持(二)
    Kali下的内网劫持(一)
    PHP中is_numeric函数十六进制绕过0day
    Linux之RHEL7root密码破解(三)
    Linux之RHEL7root密码破解(二)
    python selenium3 自动化测试
    spring boot
    记Too many open files错误
  • 原文地址:https://www.cnblogs.com/rockyyue/p/4087260.html
Copyright © 2020-2023  润新知