2015-12-30 37 views
0

我在使用Web API 2.在我的WebApiConfig中,我有這個。Cors問題API不在同一臺服務器上

private static void EnableCrossSiteRequests(HttpConfiguration config) 
    { 
     var origin = WebConfigurationManager.AppSettings["origin"]; 
     var cors = new EnableCorsAttribute(

      origins: "*", 
      headers: "*", 
      methods: "*"); 
     config.EnableCors(cors); 
    } 

註冊方法

 public static void Register(HttpConfiguration config) 
    { 

     config.MapHttpAttributeRoutes(); 
     config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

     EnableCrossSiteRequests(config); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.Filters.Add(new ErrorHandler()); 
    } 

從我的理解不應該是所有我需要爲這個工作?當它們一起託管時,它在我的開發計算機上工作。但現在一個在Web服務器上,並且該API位於不同的Web服務器上。

我得到 - Origin ...未在Access-Control-Allow-Origin標題中找到。

我把它設置爲允許所有Origin。我已經嘗試在Web配置中添加它,並在Stack overflow周圍發佈其他方法。我不明白爲什麼被拒絕?

前端是Angular,使用Ngresource進行請求。

如果我在chrome開發工具中使用網絡選項卡,則對請求的響應爲200 OK,此後不會發生任何其他事情。一直在尋找解決方案,迄今爲止我沒有嘗試過的解決方案。

謝謝。

+0

找到更多的細節在這裏... http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api –

回答

0

從我的理解不應該說我需要爲此工作嗎?

沒有。你應該裝點的Web API控制器/動作,你會喜歡被呼叫跨域與[EnableCors]屬性:

[EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")] 
public class MyController: ApiController 
{ 
    ... 
} 

這裏有一個關於這個話題good read

+0

我有它的WebAiiConfig啓用文件,在Register方法中。這應該在全球範圍內實現。我已經在很多地方讀到了它如何在全球推動Cors。我編輯了我的原始文章以顯示它。 – Dylan

+0

是的,我看到了你的帖子。現在嘗試將我的答案中顯示的屬性添加到您的控制器中。不要相信你讀的所有東西:-) –

+0

可以做[EnableCors]它需要參數 – Dylan

相關問題