javascript - ajax 发布请求 - 跨域读取阻塞 (CORB) 阻止跨域响应 CORS
问题描述
我有一个 jquery 前端项目,它使用 ajax 向我的 ASMX Webservice (c#) 发送 POST 请求。一切正常,而不是一个特殊的要求。
该应用程序类似于购物应用程序。如果我的购物车中的商品少于 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- 错误。没有 OPTIONS 并且只有 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 has HTTP status code 403, headers are missing, always OPTIONS
我很无能为力,我现在正在寻找解决方案。请帮忙。:(
解决方案
我遇到了同样的问题,但是使用了外部 API,所以我编写了一个包装器来从 C# 控制器调用 Service 方法。
我使用 ajax 在我的控制器中调用操作,而控制器又使用控制器中的 WebClient 调用外部 api。
推荐阅读
- python - 建模时如何使用 R^2 作为评估指标?
- openshift - 如何将 package.json 库的静态资产从 openshift 构建移动到 CDN 服务器
- unit-testing - Vue Test Utils / Jest - 如何测试是否在组件方法中调用了类方法
- c - 了解黄土 delta1 和 delta2 组合
- python - 训练 Python 对象检测模型 Strait 对象的图像
- java - Hibernate:将列映射到固定大小的映射
- django - 转换到不同的时区
- java - Java Selenium Web 元素变量与 Web 元素数组
- java - 在不知道哪一个包含更多值的情况下比较两个字符串数组
- c - 为什么 sprintf 再次在 char 数组之前附加字符?