我有一个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
我很笨,我现在正在寻找解决方案。请帮忙。 :(
答案 0 :(得分:0)
通过defaut浏览器阻止跨源请求。 如果您需要使用Api测试客户端项目,而Api使用 CORS 使用firefox developers edition ,但在您的情况下,请查看this教程。 希望这可以帮助!
答案 1 :(得分:0)
我遇到了同样的问题,但是使用外部API,所以我写了一个包装程序来从C#控制器调用Service方法。
我使用ajax在控制器中调用动作,而控制器又使用控制器中的WebClient调用了外部api。