gpt4 book ai didi

c# - 使用 JavaScript 调用跨域 asmx web 服务

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:52 26 4
gpt4 key购买 nike

我写了一个网络服务。我正在使用 JavaScript 调用此 Web 服务。我从不同的域调用它。为此,我在 Web 服务中添加了 [System.Web.Script.Services.ScriptService] 属性。在 JavaScript 中,我使用 XMLHttpRequest 调用该服务。我使用 Firefox 对其进行了测试,一切正常。但它在 IE 中不起作用。

经过一番搜索,我发现这是一个与跨域调用相关的问题。我已经解决了这里发布的一些问题。然后我对我的代码进行了以下更改 -

  1. 我现在使用 XDomainRequest 从 javaScript 调用服务。

  2. 我在网络服务的返回语句之前添加了以下行 - HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
    HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Credentials", "true");
    返回结果;

它在 firefox 中仍然运行良好。但在 IE8 中(据我所知,XDomainRequest 将无法在较低版本的 IE 中运行)它显示错误 (XDomainRequest.onerror)。

我错过了什么吗?

最佳答案

IE 中问题的症结在于 XDomainRequest 不支持发出包含 Content-Type header 的跨域请求所需的飞行前检查。我相信这在 IE10 中已修复,但是 even IE9 doesn't fully support CORS .

要在不支持 CORS 的浏览器中可靠地向 ScriptServices 发出跨域请求,a server-side proxy是(不幸的)你最好的选择。

关于c# - 使用 JavaScript 调用跨域 asmx web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com