2014-05-07 73 views
0

我有我的解決方案的幾個項目:的WebAPI和Webpage項目 的Web API項目使用以下URL返回我的一些數據:跨域問題時進行調用Ajax的Web API

http://localhost:63983/api/values 

我主要的web項目,它使用另一個端口:

http://localhost:63421/#/ 

,現在當我跑我的Web項目,我試圖做一個簡單的Ajax調用我的WebAPI 在這裏,我得到一個非常奇怪的錯誤: Firebug的顯示狀態:200 OK,但它mar ks它與紅色,我沒有得到任何數據。

我認爲它可能與跨域有關。

+0

以防萬一,如果有人需要幫助,有一個可行的解決方案在這裏: http://www.c-sharpcorner.com/UploadFile/dacca2/web-api-with-ajax-cross-domain-ajax-call-with-get-request/ –

回答

0

你猜的是完全正確的。您不能讀取不同域中的數據。域名是domain nameport。這也適用於一個在HTTP(端口80),另一個在HTTPS(端口443)

您可以明確地允許WebProject通過設置一個標頭你的WebApi。因此,當你做一個AJAX調用到http //本地主機:63983/API /值,它應該包括HTTP標頭:

Access-Control-Allow-Origin: http://localhost:63421 

更多細節可以在這裏找到:http://css.dzone.com/articles/ajax-requests-other-domains

0

您可以啓用CORS支持在Web API中使用Microsoft.AspNet.WebApi.Cors nuget包。

安裝上述軟件包後,具有以下配置應該可以解決您的問題。

config.EnableCors(new EnableCorsAttribute(origins: "*", headers: "*", methods: "*"));

此處瞭解詳情:
http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

+0

我做了一個快速的研究,似乎只有在使用WebAPI2時纔可以使用這個包,而事實並非如此 –