2014-02-28 63 views
0

我有一個MVC的Web休息API,有看起來像這樣的方法:跨域問題,我的POST功能

public HttpResponseMessage PostBook(DtoBooks Book) 
     { 
      if (Book == null) 
      { 
       return Request.CreateResponse(HttpStatusCode.BadRequest); 
      } 
      Book.Id = Guid.Empty; 
      BookManager.Instance.Add(Book); 
      var response = Request.CreateResponse(HttpStatusCode.Created, Book); 
      return response; 
     } 

其託管與IIS不同的域。

當我想測試做後我鍵入以下JS:

jQuery.ajax({ 
       type: "POST", 
       url: "http://domain-2:9090/api/Values/", 
       dataType: "json", 
       data: { CallToActionUrl: 'http://domain-2/', Message: 'Hello World!', OpenInModal: false, Status: 0, TargetUser: 'domain2\admin', TimeStamp: '2014-02-28', Type: 0 }, 
       success: function (data) { 
        alert("success") 
       }, 
       error: function (data) { 
        alert("Fail") 
       } 
      }); 

當我瀏覽到http://domain-2:8080/我可以運行這個Ajax和它完美的作品! 但是,當我嘗試在不同的域上使用它可以說域-3,它會失敗。

我試過CORS,它適用於IE9身邊所有的瀏覽器..

對此有任何解決方案?將不勝感激。

+0

如果你試圖在IE9中做交叉源ajax請求,你需要使用'XDomainRequest'而不是'XMLHttpRequest'。有一個包裝XDR的jQuery插件。您應該知道XDR有一些顯着的限制。另一個選擇是使用這樣的庫:https://github.com/jpillora/xdomain。 –

回答

0
+0

我不使用apache – Obsivus

+0

修改了答案並添加了一些鏈接。 – kds

+0

他們都不工作或不是我在做的相同類型,我正在做一個POST並且不能使用JSONP和使用CORS它不會與IE9一起使用。 – Obsivus

-1

您的錯誤消息是否提及了有關跨域策略的內容? 我有類似的問題,並得到這個消息。

嘗試在你的web服務文件夾中創建文件的crossdomain.xml幷包括以下內容:

<?xml version="1.0"?> 
<\!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
<allow-access-from domain="*" /> 
<allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

您可能需要改變*另一個更嚴格的價值。但你可以從那裏開始工作,如果它工作的話

+0

您的回答僅適用於閃光燈。這個問題不是關於閃光。 –

+0

@ Ray Nicholus我不同意。我的回答不僅適用於閃光燈。它也適用於例如Silverlight。它可能不適用於Obsivus問題,但它可能適用於其他人尋找答案。您的評論不準確 –

+0

好的,我回過頭來看 - 您的回答僅適用於與原始問題完全沒有關係的過時技術。更好? –