我已经使用 [ScriptService] 属性启动并运行了一个 ASP.NET Web 服务。从我从这篇文章中读到的内容:
默认情况下,ASP.NET 不允许 JSONP 请求(通过拒绝跨域请求注入 DOM。它通过采取 2 种措施来做到这一点:
1) 仅接受 POST 请求(通过始终执行 GET 的脚本注入) 2) 拒绝发送 HTTP 标头 Content-type 而非“Content-type: application/json”(浏览器不会发送)的连接。
我熟悉跨域问题,我知道 JSONP 是什么,我完全理解为什么 ASP.NET 默认以这种方式受到限制。
但是现在,我的网络服务是公开的,应该对所有人开放。因此,我明确需要通过 Javascript 向我的 Web 服务启用跨域请求,以便外部网站可以通过我的 Web 服务从 jquery 等中检索数据。
我已经介绍了步骤 (1) 以通过以下方式修改 ScriptMethod 属性来允许通过 GET 请求:[ScriptMethod(UseHttpGet=true)]。我已经检查了 jQuery,GET 请求现在可以工作(在同一域上)。但是如何到达固定点(2)?
我知道一些浏览器支持的 Allow-Origin-* 标头,但它还不是标准的,我不想强迫我的用户/客户修改他们的 HTTP 标头以使用我的 web 服务。
总结一下:我需要良好的实践来通过 JSON 为公共 Web 服务启用 ScriptingService 的跨域请求。我的意思是必须有一种方法可以公开 Web 服务,这就是大多数 Web 服务的意义所在?