2016-04-11 55 views
0

我需要使用C#調用不同服務器的API。 我使用下面的方法如何在C#中調用跨域API#

using (HttpClient client = new HttpClient()) 
       { 
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "tolen"); 
        var result = await client.GetStringAsync("url"); 
        return JsonConvert.DeserializeObject(result); 
       } 

,但它總能給

403禁止

我已經問過這個API的開發者,他建議我需要發送預檢要求也。

+0

是您所呼叫的服務也在C#中? – Mostafiz

+0

外部域的開發人員必須將其API設置爲允許CORS。飛行前請求只是檢查外部API是否允許此請求。 (app.UseCors(CorsOptions.AllowAll);) –

+0

CORS被允許,因爲它可以從瀏覽器(Jquery)訪問。那麼我們可以在c#中創建一個預發佈請求嗎? – user1552663

回答

0

如果C#編寫的服務代碼,那麼你可以啓用API方法部分跨域訪問像下面

 [EnableCors(origins: "*", headers: "*", methods: "*")] 
     public string Get() 
     { 

上面的代碼啓用CORS所有外部域,但您可以通過這種方式只能指定自己的域名

[EnableCors(origins: "http://yourdomain.com", headers: "*", methods: "*")] 

有用的兩個環節https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api https://msdn.microsoft.com/en-us/magazine/dn532203.aspx