处理ajax调用不了webService的问题

写一个webService做为后台,然后前台用ajax调用,无论怎么调用都报abort的错误。然后开始排查错误原因。

1、把之前项目中已经可以正常调用的代码复制、粘贴过来,然后把地址换成现在这个地址,发现报错abort。就说明是后台的问题了。

2、在试着把后台的代码复制到之前能够正常运行的后台上面,然后通过之前的webService的地址去调用这个接口,发现可以正常调用了,这说明是新建的这个webService的问题。

3、然后通过对比发现,在新的webService中,要添加一些配置才能够正常被调用,否则就会一直地报错。

4、修改web.config文件下面的<system.webServer>,在里面添加如下配置,就能正常的被调用了。

<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
<add name="Access-Control-Allow-Origin" value="*" />

5、附加完整的配置

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <remove name="ApplicationInsightsWebTracking"/>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"
        preCondition="managedHandler"/>
    </modules>
  </system.webServer>

添加这一段配置的意思就是允许用户跨域请求,之前请求失败的原因就是因为不在一个段里面,所以就请求失败了。

 

关于跨域请求的问题,还有另一种方法就是不需要配置,直接使用jsonp请求方式请求。

如果把这一段配置删除,使用jsonp调用,可能也会成功。具体暂时还没有测试过,这里就先不说了。

 

关于配置的问题,还有另一种方法:就是直接在IIS的网站的HTTP响应标头里面添加,具体操作就不写出来了,可以参考如下地址进行配置:https://www.moyublog.com/notes/634.html

 

其实添加这个配置也是跨域请求的一种处理方式,这种方式叫做CORS处理方式。跨域请求的处理方式主要有两种:

1、jsonp的处理方式,这个方式主要是客户端的处理方式。

2、CORS的处理方式,这个方式主要是服务端的处理方式,主要是在服务端添加一些配置等等。

3、关于跨域请求的处理方式,这里就不详细说了,具体的可以参考:https://www.cnblogs.com/yangecnu/p/introduce-cross-domain.html

posted @ 2019-07-23 20:03  masha2017  阅读(619)  评论(0编辑  收藏  举报