[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) благодари сърдечно предварително за всякакви отговори и насоки :)
"Между другото Честити Рождество Христово."
Цецо, май си прекалил с алкохола по праниците :D
Воистина воскресе! :)
Весела Коледа и на теб
Ха сега на трезво...![laughing](/Scripts/tinymce/plugins/emoticons/img/smiley-laughing.gif)
Христос възкресе
P.S. То с този сняг наскоро, как да не се обърка човек.
И на нас ни гърмя логин-а.Оказа се, че е заради 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 метода, и абсолютно нищо друго.