2015-10-12 9 views
5

Przeprowadzam migrację mojego projektu z wersji 1.3 beta 1.4 do belki 1.3, "$ http get" działa dobrze, ale "Problem z pocztą $ http" tworzy problem. Poniżej użytkownik kod uwierzytelniający, który działa dobrze w 1.3, ale nie działa w 1.4

factory.authenticate = function (email, password) { 
    var payload = { 
     email: email, 
     password: password 
    }; 
    var rid = Security.reqKey(); 
    payload['rid'] = rid; 
    return $http({ 
     method: 'POST', 
     url: Base_url +'service/auth', 
     param: { 
      rid: rid 
     }, 
     data: $.param(payload), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }); 
}; 

Po migracji do 1,4 produkować błąd:

POST http://localhost/ 405 (Not Allowed) XHR failed loading: POST

(który działa dobrze wcześniej)

jest przypadek, w którym ten kod daje pożądany wynik. Po umieszczeniu debuggera w przeglądarce Chrome i uruchomieniu całego kodu przez naciśnięcie klawisza f10.

+1

co to jest "Bezpieczeństwo" i dlaczego nie jest wstrzykiwane? Również wygląda na to, że funkcja 'Security.reqKey()' jest asynchroniczna i dlatego nie jest w czasie, kiedy wykonujesz swój kod bez debuggera i jest on na czas, kiedy debugujesz go - jest to po prostu kwestia kilku milisekund. – smnbbrv

+0

Bezpieczeństwo to nic innego jak fabryka po stronie klienta, której wartość opiera się na funkcji Date.now(). ValueOf(); Nie sądzę, że to powoduje problem. Ponieważ próbowałem tego kodu z parametrem out out. ale produkuje ten sam błąd. :( –

+0

, więc jest to prawdopodobnie problem, że nie przekazujesz parametru, Twój błąd jest zresztą taki jak po stronie serwera. Musisz najpierw sprawdzić, co jest źródłem problemu (chociaż jestem całkiem pewien dzieje się tak, ponieważ nie masz tego parametru rid). Nie dostaniesz tutaj rozwiązania, jeśli nie opublikujesz wszystkich powiązanych funkcji, w tym rzeczy po stronie serwera – smnbbrv

Odpowiedz

0

Według docs,

params – {Object.} – Map of strings or objects which will be serialized with the paramSerializer and appended as GET parameters.

param powinny być params i dlatego dane nie są w odcinkach, które mogłyby wyjaśnić, dlaczego serwer odrzuca swój post (od postu wymaga więcej uprawnień niż GET przypuszczalnie).

Ale nawet to może być niepoprawne, ponieważ myślę, że params jest tylko dla GET (ale może działa dla obu).

Nie potrzebujesz też jquery $.param() $ http ma wbudowany serializer. data może ustawić tylko na payload.

Powiązane problemy