我有一个包含一组小部件的ASP.Net Web应用程序。这些小部件使用jQuery通过AJAX调用获取其内容。升级到.Net 4.6.1之后,这些小部件将无法在远程站点上正常工作。可悲的是我无法恢复到4.5,所以我必须在4.6.1中修复它。也许任何其他更改都导致了失败,但是我想不出任何会影响此操作的更改。
在Chrome中,我得到了404
https://leasescanner.nl/ajaxlibrary.asmx/GetWidgetForm 404(未找到)
随后是https://autolease.nl的CORS错误:
无法加载https://leasescanner.nl/ajaxlibrary.asmx/GetWidgetForm: 飞行前响应没有HTTP正常状态。
在firefox中,没有404错误,并且网址似乎正常。 https://leasescanner.nl/ajaxlibrary.asmx/GetWidgetForm?cwEntityGuid=c5019e1d-34ae-4609-beeb-a01300d27a70工作完美。
当我查看CORS标头时,它们似乎匹配:
请求:
- 访问控制请求标题:内容类型
- 访问控制请求方法:POST
- 来源:https://www.autolease.nl
- 用户代理:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 69.0.3497.100 Safari / 537.36
响应:
- 访问控制允许标题:内容类型
- 允许访问的方法:GET,PUT,POST,DELETE,OPTIONS
- 访问控制允许来源:*
- 访问控制公开标题:
- 请求-上下文连接:保持活动内容长度:0日期:18岁,星期四
- 2018年10月11:13:03 GMT请求上下文 appId = cid-v1:eeb945a7-90ca-4f39-98f3-3160b63f1cee
- 服务器:nginx
- X-Powered-By:ASP.NET
这是我的AJAX呼叫:
jQuery.ajax({
url: domain + "/ajaxlibrary.asmx/GetWidgetForm",
type: "POST",
data: "{'cwEntityGuid': '" + jQuery(item).data('cwentity') + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
jQuery(item).html("<form id='form_" + jQuery(item).data('cwentity') + "' method='get' data-postdomain='" + postdomain + "' " + cwreferral + " data-url='" + jQuery(item).data('url') + "' action='" + postdomain + jQuery(item).data('url') + "' >" + data.d + "</form>");
}
});
我的Web.Config中有以下部分,它似乎可以正常工作(查看响应头):
<location path="ajaxlibrary.asmx/GetWidgetContent">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
我在做什么错? .Net 4.6.1有什么变化吗?