2013-10-03 51 views
6

我正嘗試從HTML小部件中調用Web服務跨域。這似乎並不奏效。它在同一個域下運行得很好。我正嘗試在Orchard內創建一個登錄頁面,該頁面可用於在另一個域上登錄我的軟件。 Web服務正在驗證用戶憑證並返回一個布爾值,然後生成用戶驗證。如何處理來自Orchard CMS的跨域Web服務調用CMS

我讀過我可以使用HTTP處理程序或其他Web服務(位於Orchard端)調用其他域上的Web服務,但我對MVC或Orchard不熟悉這一點。我如何將其中的一個添加到我的Orchard Web應用程序中?

回答

11

客戶端代碼中的跨域調用在所有主流瀏覽器中都是不允許的。 你可以是

  1. 使用CORS,即。設置Access-Control-Allow-Originhttp://your-caller-domain.com在Web服務響應,允許請求從您的網站域名
  2. 使用JSONP技術
  3. 創建您的應用程序中的自定義代理API始發(使用普通ASP.NET MVC controllerWebAPI一個)將執行使用WebClient類在服務器端調用,並將響應返回給您。

選項按從高到低的順序排列。大多數瀏覽器都支持CORS,除了IE8/9(部分支持通過XDomainRequest)和更舊版本。儘管如此,仍有解決方法。

請注意,前兩個涉及Web服務方面的變化 - 如果你不能這樣做,選項3是唯一剩下的。

+1

注意:CORS在IE8/9中通過'XDomainRequest'部分支持。 –

+0

@RayNicholus是的,因此我提到有解決方法。謝謝你明確指出 - 相應地更新了答案。 –