我有一個未成年人...或者主要..關於breezejs的問題.. 我目前的設置是,我有兩個項目..一個web-api項目,承載breeze-api ..和另一個項目哪些主機應該消耗的API客戶端應用程序多數民衆贊成.. 這會給我該API和客戶端運行在兩個不同的端口..Breezejs,crossdomain
所以我的問題是...有沒有什麼辦法讓輕而易舉地在跨領域工作?..或者是微風只能在自己的領域內使用?
在此先感謝!
我有一個未成年人...或者主要..關於breezejs的問題.. 我目前的設置是,我有兩個項目..一個web-api項目,承載breeze-api ..和另一個項目哪些主機應該消耗的API客戶端應用程序多數民衆贊成.. 這會給我該API和客戶端運行在兩個不同的端口..Breezejs,crossdomain
所以我的問題是...有沒有什麼辦法讓輕而易舉地在跨領域工作?..或者是微風只能在自己的領域內使用?
在此先感謝!
跨域的問題沒有問題。
好吧有一個問題,但它不是一個微風的問題。你正在蹂躪着困擾着我們所有人的瀏覽器的「Same Origin Policy」。
你可以規避它。唯一的問題是你想如何去做。這個問題從「你會支持哪些瀏覽器」開始。如果IE10 +和最新的Chrome和FF,你應該去CORS。如果是舊版本的瀏覽器和Opera ...你將不得不參與JSONP的戰鬥。
請指教。
推動:猜猜我喜歡哪一個? Breeze中已經有一個CORS樣本...它的編號爲the Todo sample,你可以通過the downloads得到。它尚未記錄,但它在那裏等着你。
病房的解決方案非常正確,我只是增加了一個更直接的解決方案。
現在請做這個安裝包。
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結尾沒有反斜線。
好了:)我設法讓CORS版本工作,謝謝:) 但是,如果我的客戶端需要IE7和以上的例子,這將如何完成?..我想這將需要JSONP ..但是我會如何實現這一點?..你能指點我在正確的方向:) – Inx 2013-03-20 15:20:25
JSONP更難。它也需要在服務器上做更多的工作,因爲所有的端點都必須理解JSONP和AFAIK,沒有一種標準的方式來請求JSONP中的CUD操作。我們會舉個例子......最終......但說實話,這不是優先事項。正如我所說,這是一個瀏覽器問題,而不是Breeze問題。您可以學習如何在其他地方設置服務器API,然後在您準備在Breeze中使用服務器API時找到我們。抱歉。目前我可以提供最好的服務。 – Ward 2013-03-20 18:17:28
好的非常感謝答案:)! – Inx 2013-03-21 22:12:18