2014-10-06 22 views
0

我一直在使用ASP.NET WebAPI和AngularJS測試一些小型公司的Web應用程序。我真的很喜歡它的流動。我有一個默認HomeController有一個Index方法類似於:ASP.NET WebApi for SPA無CORS

public HttpResponseMessage Get() 
{ 
    var response = new HttpResponseMessage(); 
    response.Content = new StringContent(/* index.html */); 
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); 
    return response; 
} 

,我回到我的第一index.html頁,它駐留在我的應用程序。我的問題是,要實現這個目標,我必須在Startup.cs中的OWIN中間件中啓用CORS。我真的很想讓WebAPI返回我的索引頁面,而不必啓用CORS,並且允許所有後續的來自角度的http請求在沒有啓用交叉源的情況下工作。這是可行的,還是這違背了WebAPI的整個概念?

感謝您的任何指導。

+2

GET請求不需要CORS ......你確定你實際上是通過渲染正常獲取頁面,而不是與一些AJAX和比做某種'innerHTML'的查詢呢? – 2014-10-06 01:04:06

回答

4

只要你不進行跨域調用,你就不需要啓用cors。 但是請記住,您必須位於相同的域,甚至相同的端口。

要確保相同的域,只需將您的webapi託管在您的web應用程序中。

+0

添加什麼TGH說,你要像mywebsite.com/api託管您的API - 這會讓你的JavaScript訪問它。或者,您可以將所有內容都更改爲JSONP - 如果您要採用該路線,則可以使用CORS – Prescott 2014-10-06 01:04:36

0

難道你不能在託管網站的Web服務器上加入某種反向代理,即所有頁面和api請求都有相同的URL前綴嗎?然後,客戶端調用API,就好像託管Web應用程序也在託管API一樣。託管的Web應用程序配置了反向代理,然後所有API請求都會重定向到服務器級別的實際API,而不是客戶級別。希望這是有道理的。從瀏覽器