2014-05-13 2 views
5

Я создал службу asp.net web api 2 с индивидуальной защитой учетной записи. Я пытаюсь позвонить ему форму AngularJs как в этом примере: http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En не мог получить, чтобы работать так добавили некоторые конфигурации отсюда: How to make CORS Authentication in WebAPI 2?asp.net web api 2 Конфигурация авторизации CORS и авторизации

и не может пройти эту ошибку: XMLHttpRequest не может загрузить " serverRegisterUrl. Заголовок 'Access-Control-Allow-Origin' содержит несколько значений clientUrl, *, * ', , но разрешено только одно. Поэтому исходный клиент «клиент» не имеет доступа.

Я не понимаю это сообщение об ошибке. Я думаю, что строка Access-Control-Allow-Origin означает, что источник originUrl, все заголовки, все методы

Я не понимаю проблему. Если я должен просто указать происхождение где-то, я не знаю, где это.

Я запускаю это на Microsoft Azure и использую vs express для обновления веб-2013 2 на всякий случай.

Я, к сожалению, должен был удалить мои ссылки из сообщения об ошибке, потому что мне нужно по меньшей мере репутацию 10 здесь, чтобы разместить более двух ссылок в вопросе.

+0

в вашем наборе API 'Access-Control-Allow-Origin: *' и он должен работать – Sebastian

+1

у меня есть это в моем апи web.config: –

+0

<добавить имя = "Access-Control -Allow-Origin "value =" * "/> не работает –

ответ

0

Похоже, что ваше значение Access-Control-Allow-Origin было clientUrl, *, *, что может быть недействительным. Это позволяет только одно значение. Вы можете положить * означает, что разрешено любое происхождение, или тот, который вы указали, например, ваш узел AngularJS.

Я поставил свой код на https://gist.github.com/shaunxu/8414a78cd8074432fc69 Это может быть не восточный путь, но он работает в моем приложении.

+0

Спасибо за ваш код. В зависимости от того, как я настраиваю вещи вокруг него, я либо получаю: на запрошенном ресурсе присутствует заголовок 500 (Internal Server Error) или No 'Access-Control-Allow-Origin'. Я собираюсь выяснить, как отслеживать/регистрировать мой сервис в лазурном режиме, поскольку я не знаю, что стоит за этими 500 ошибками, и я думаю, что я их генерировал в некоторых случаях, прежде чем я начал использовать ваш класс. –

+0

это, безусловно, лазурная вещь. мой код работает локально, 500 ошибок происходит в лазурном режиме, придется добавлять журнал ошибок. –

9

У меня это работает, я думаю, что он дошел до конфигурации. Web.config: нет "Access-Control-Allow-Origin" customHeaders узел

Startup.Auth.cs:
// This must come first to intercept the /Token requests app.UseCors(CorsOptions.AllowAll);

// Enable the application to use bearer tokens to authenticate users app.UseOAuthBearerTokens(OAuthOptions);

WebApiConfig.cs: (не допуская cors here) //var cors = new EnableCorsAttribute("*", "*", "*"); //config.EnableCors(cors);

AccountController.cs: атрибут по методу GetExternalLogin: [EnableCors(origins: "*", headers: "*", methods: "*")]


Я думаю, что вся моя текущая CORS конфигурации.

+0

Это сработало для меня. Удивительно, спасибо. –

4

Просто добавив ответ @ AlexSmotritsky.

Для того, чтобы использовать UseCors метод

app.UseCors(CorsOptions.AllowAll); 

забудьте установить Microsoft.Owin.Cors NuGet и добавьте

с использованием Microsoft.Owin.Cors; директива.