如何在Orchard CMS中处理来自JS的跨域Web服务调用

How to handle cross-domain web service calls from JS in Orchard CMS

本文关键字:JS Web 调用 服务 Orchard CMS 处理      更新时间:2023-09-26

我正在尝试从HTML小部件中跨域调用Web服务。这似乎行不通。它在同一域下工作得很好。我正在尝试在 Orchard 中创建一个登录页面,该页面可用于登录另一个域上的软件。Web 服务正在验证用户凭据并返回一个布尔值,然后生成用户身份验证。

读到我可以使用HTTP处理程序或其他Web服务(在Orchard端)来调用另一个域上的Web服务,但我对MVC或Orchard不够熟悉,无法做到这一点。如何将其中一个添加到我的 Orchard Web 应用程序?

来自客户端代码中的跨域调用在所有主流浏览器中都是禁忌。你可以

  1. 使用 CORS,即在 Web 服务响应中Access-Control-Allow-Origin标头设置为http://your-caller-domain.com,以允许来自您的网站域的请求
  2. 使用 JSONP 技术
  3. 在应用程序中创建自定义代理 API(使用纯 ASP.NET MVC 控制器或 WebAPI 控制器),该 API 将使用类在服务器端执行调用WebClient并将响应返回给您。

选项按从最佳到最差的顺序排列。大多数浏览器都支持CORS浏览器,除了IE8/9(通过XDomainRequest部分支持)和更早版本。不过,有一些解决方法。

请注意,前两个涉及 Web 服务端的更改 - 如果您做不到,选项 3. 是唯一剩下的一个。