6

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

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

4

1 回答 1

11

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

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

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

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

于 2013-10-03T21:08:38.300 回答