2013-03-20 2 views
2

У меня есть второстепенный ... или, может быть, майор .. проблема относительно breezejs .. Моя текущая настройка заключается в том, что у меня есть два проекта .. один проект web-api, в котором размещается ветерок-апи .. и еще один проект, в котором размещается клиентское приложение, которое должно потреблять api. Это даст мне два разных порта, на которых работает api и клиент.Breezejs, crossdomain

Так что мой вопрос: есть ли способ получить бриз для работы над кросс-доменами? .. или это бриз, созданный только для использования в его собственном домене?

Заранее благодарен!

ответ

3

Без проблем перекрестный домен.

Хорошо, есть проблема, но это не проблема Бриз. Вы боретесь с браузером «Same Origin Policy», который поражает всех нас.

Вы можете обойти его. Вопрос только в том, как вы хотите это сделать. И этот вопрос начинается с того, «какие браузеры вы будете поддерживать». Если IE10 + и последние Chrome и FF, вы должны пойти CORS. Если старые браузеры и Opera ... вам придется сражаться с JSONP битвами.

Просьба сообщить.

Nudge: Угадайте, какой я предпочитаю? В Breeze уже есть образец CORS ... это the Todo sample, который вы получаете с the downloads. Это еще не задокументировано, но оно там ждет вас.

+0

ОК отлично :) .. Мне удалось получить версию CORS для работы, спасибо :) Но как это сделать, если у моего клиента есть требование IE7 и выше, например? .. Думаю, для этого потребуется JSONP .. но как бы это реализовать? .. не могли бы вы указать мне в правильном направлении, пожалуйста :) – Inx

+1

JSONP сложнее. Это требует больше работы на сервере, потому что все ваши конечные точки должны понимать JSONP и, AFAIK, нет стандартного способа запросить операции CUD в JSONP. У нас будут примеры ... в конце концов ... но сейчас это не приоритет, чтобы быть честным. Как я уже сказал, это проблема с браузером, а не проблема с Breeze. Вы можете узнать, как настроить серверный API в другом месте, а затем прийти к нам, когда вы будете готовы его использовать в Бризе. Сожалею. Лучшее, что я могу предложить на данный момент. – Ward

+0

Хорошо спасибо за ответы :)! – Inx

0

Решение Ward'd очень правильное, просто добавление более прямого решения.

Теперь установите этот пакет.

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> 

Change "Access-Control-Allow-Origin" на ваш другой сайт * представляет собой угрозу безопасности как это позволяет все я использую его для развития

Затем добавьте этот altribrute к ресурсу года хотят быть подъездом

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

Снова изменить происхождение здесь тоже не помню обратной косой черты в конце URL-адреса.

+0

попробовал это и не получил сущности назад – daniel

+0

Какая ошибка вы получаете? Проверьте, не активируете ли вы их дважды. Если у вас есть библиотеки owin, вам может потребоваться другой подход. – konzo

+0

У меня нет ошибок. Я просто получаю 0 сущностей.Я не включил его дважды (имел это и исправил). Я попробовал библиотеки web api и owin с тем же результатом. – daniel