ajax发布请求-跨域读取阻止(CORB)阻止了跨源响应CORS

时间:2018-08-15 15:09:16

标签: javascript c# jquery ajax cors

我有一个jquery前端项目,该项目使用ajax将POST请求发送到我的ASMX Web服务(c#)。一切正常,而不是一个特殊的请求。

该应用程序类似于购物应用程序。如果我的购物车中物品少于5件,则将订单发送到数据库的Post-request效果很好。如果我有5件或更多物品,我会收到CORS错误。

我的后端(在IIS上)具有以下配置:

 <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="POST" />
        <add name="Access-Control-Allow-Headers" value="Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With" />

      </customHeaders>
    </httpProtocol>

这是一个简单的CORS请求(仅允许POST),以避免OPTIONS飞行前请求。 OPTIONS请求也给我一个404的CORS错误。 没有选项,只有POST,我会收到此错误:

    POST https://sperrmuellportalapi.ks-weimar.de/webservice_ex.asmx/SP_WRITE_Sperrmuellanmeldung
     

403(禁止)       发送@ jquery-3.1.1.min.js:4       ajax @ jquery-3.1.1.min.js:4       SPWriteSperrmuellanmeldung @ index.js:3469       (匿名)@ index.js:3380       派遣@ jquery-3.1.1.min.js:3       q.handle @ jquery-3.1.1.min.js:3

/#zsfg_sp_anmelden:1 Failed to load https://sperrmuellportalapi.ks-weimar.de/webservice_ex.asmx/SP_WRITE_Sperrmuellanmeldung:
     

请求的请求上没有'Access-Control-Allow-Origin'标头   资源。因此,原点“ https://sperrmuellportal.ks-weimar.de”是   不允许访问。响应的HTTP状态码为403。

jquery-3.1.1.min.js:4 Cross-Origin Read Blocking (CORB) blocked cross-origin response
     

https://sperrmuellportalapi.ks-weimar.de/webservice_ex.asmx/SP_WRITE_Sperrmuellanmeldung   MIME类型为text / html。看到   https://www.chromestatus.com/feature/5629709824032768了解更多   详细信息。

ajax请求开始如下:

$.ajax({
        type: "POST",
        dataType: "xml",
        url: UrlToWebservice + "SP_WRITE_Sperrmuellanmeldung",

        data: {..some params..}, ...

这是一种ASMX Web服务,所以我使用XML作为交换格式。

这个问题与此有关:ajax POST - The response had HTTP status code 403, headers are missing, always OPTIONS

我很笨,我现在正在寻找解决方案。请帮忙。 :(

2 个答案:

答案 0 :(得分:0)

通过defaut浏览器阻止跨源请求。 如果您需要使用Api测试客户端项目,而Api使用 CORS 使用firefox developers edition ,但在您的情况下,请查看this教程。 希望这可以帮助!

答案 1 :(得分:0)

我遇到了同样的问题,但是使用外部API,所以我写了一个包装程序来从C#控制器调用Service方法。

我使用ajax在控制器中调用动作,而控制器又使用控制器中的WebClient调用了外部api。