[Useful Info] Web Services and Cloud - Web Api - enable CORS

[Useful Info] Web Services and Cloud - Web Api - enable CORS

Kibork avatar Kibork 87 Точки

[Useful Info] Web Services and Cloud - Web Api - enable CORS

MOD EDIT: Погледнете Best Answer-a, Колеги

Здравейте.

По екипния проект сме понаправили backend (Web Api проект с автоматично генерирана Authentication), в момента го вързваме с прост frontend (две поленца за username и password и бутон за логин). Имаме следния проблем:

При логин (/Token) заявката минава, параметрите се изпращат правилно, връща 200 ОК, но не иска да прочете JSON-a, който се връща от сървъра - дава, че първият символ е грешен.

Заявката работи успешно през Postman. Не работи през Hurl.

Какво сме опитали до момента?

- да настроим CORS

- преровихме си кода за грешки...

Register работи и през Postman и през формичката... Логин - нъцки...

 

Някой да се е изправял пред този проблем и да може да даде съвет?

Отбор черешка (French-Lime) благодари сърдечно предварително за всякакви отговори и насоки :)

 

Тагове:
0
C# Web Services & Cloud 09/04/2015 14:32:50
ZvetanIG avatar ZvetanIG 925 Точки

Преминах през същите перипети и след един загубен ден стигнах до същите статии и заключения.  Но уви не става.  Работи само регистрацията, но не и логина.  Незнам какви мъгии сте му направили, но просто нестава.  Явно ще си правим собствен логин.... 

Между другото Честити Рождество Христово.

1
Matrix avatar Matrix 1087 Точки

"Между другото Честити Рождество Христово."

Цецо, май си прекалил с алкохола по праниците :D

Воистина воскресе! :)

1
12/04/2015 01:18:37
RoYaL avatar RoYaL SoftUni Team Trainer 6789 Точки

Весела Коледа и на теб

2
ZvetanIG avatar ZvetanIG 925 Точки

Ха сега на трезво... laughing

Христос възкресе

P.S.  То с този сняг наскоро, как да не се обърка човек.

1
12/04/2015 10:21:40
borislavml avatar borislavml 368 Точки

И на нас ни гърмя логин-а.Оказа се, че е заради grant_type: password и тъпия начи, по който end-point-a в WEB API /Token приема заявките. Предполагам, че го правите с AJAX и като му пададете креденшълите като json/apllication той не харесва точно този grant_type:passwor. В stackoverflow имаше чудесни отговори на този проблем, но не мога да  открия темата в момента.Там предлагаха два изхода. Единия e в AJAX call-a, примерно както ползваме ние angular-ското $http 


$http({
  method: method,
  url: url,
  data: data
  headers: headers
})

да се заадед на headers, че му пращаме данните url-encoded: headers: 'Content-Type', 'application/x-www-form-urlencoded', а другия да се подаде data като стринг а не като обект: data: "Username=" + username +
"&password=" + password + "&grant_type=password".

При нас сработи по втория начин, дано и при вас това да е пороблема.

Едит: А относно CORS-а, при мен тръгна за 2 минути. Инстал owin пакета и един ред код в 

App_Start/Startup.Auth.cs , а именно app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); в ConfigureAuth метода, и абсолютно нищо друго.

 

3
12/04/2015 11:44:56