2013-03-20 86 views
2

我有一個未成年人...或者主要..關於breezejs的問題.. 我目前的設置是,我有兩個項目..一個web-api項目,承載breeze-api ..和另一個項目哪些主機應該消耗的API客戶端應用程序多數民衆贊成.. 這會給我該API和客戶端運行在兩個不同的端口..Breezejs,crossdomain

所以我的問題是...有沒有什麼辦法讓輕而易舉地在跨領域工作?..或者是微風只能在自己的領域內使用?

在此先感謝!

回答

3

跨域的問題沒有問題。

好吧有一個問題,但它不是一個微風的問題。你正在蹂躪着困擾着我們所有人的瀏覽器的「Same Origin Policy」。

你可以規避它。唯一的問題是你想如何去做。這個問題從「你會支持哪些瀏覽器」開始。如果IE10 +和最新的Chrome和FF,你應該去CORS。如果是舊版本的瀏覽器和Opera ...你將不得不參與JSONP的戰鬥。

請指教。

推動:猜猜我喜歡哪一個? Breeze中已經有一個CORS樣本...它的編號爲the Todo sample,你可以通過the downloads得到。它尚未記錄,但它在那裏等着你。

+0

好了:)我設法讓CORS版本工作,謝謝:) 但是,如果我的客戶端需要IE7和以上的例子,這將如何完成?..我想這將需要JSONP ..但是我會如何實現這一點?..你能指點我在正確的方向:) – Inx 2013-03-20 15:20:25

+1

JSONP更難。它也需要在服務器上做更多的工作,因爲所有的端點都必須理解JSONP和AFAIK,沒有一種標準的方式來請求JSONP中的CUD操作。我們會舉個例子......最終......但說實話,這不是優先事項。正如我所說,這是一個瀏覽器問題,而不是Breeze問題。您可以學習如何在其他地方設置服務器API,然後在您準備在Breeze中使用服務器API時找到我們。抱歉。目前我可以提供最好的服務。 – Ward 2013-03-20 18:17:28

+0

好的非常感謝答案:)! – Inx 2013-03-21 22:12:18

0

病房的解決方案非常正確,我只是增加了一個更直接的解決方案。

現在請做這個安裝包。

Microsoft.AspNet.WebApi.Cors

然後添加這web.config中

<system.webServer> 
<httpProtocol> 
<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*"/> 
    <add name="Access-Control-Allow-Headers" value="Content-Type"/> 
    <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/> 
</customHeaders> 
</httpProtocol> 
</system.webServer> 

更改「訪問控制允許來源」到其他網站*是一個安全隱患,因爲它允許所有正在使用它的發展

那麼這altribrute添加到資源喲希望可以接觸

[EnableCors(origins: "*", headers: "*", methods: "*")] 

在這裏再次改變原點,記住在url結尾沒有反斜線。

+0

試過這個並且沒有回到實體 – daniel 2015-11-12 21:37:18

+0

你得到了什麼錯誤?檢查你是否不啓用它們兩次。如果你有owin庫,你可能需要一個不同的方法。 – konzo 2015-11-13 01:45:03

+0

我沒有收到任何錯誤。我只得到0個實體。我沒有啓用它兩次(擁有並修復它)。我嘗試了web api和owin庫,獲得了相同的結果。 – daniel 2015-11-13 09:54:29