Bonjour,
Lorsque je lance un POST à partir d'une appli AngularJs, j'ai constaté qu'il y avait deux aller-retours, un pour les OPTIONS et un pour le POST lui-même. Le problème outre qu'il y a deux REQUEST/RESPONSE au lieu d'une, c'est que dans le premier le contenu est vide, du coup j'ai été obligé côté serveur de tester si le json était non null avant de faire l'update.
Ma question : est-ce qu'il est possible d'éviter le premier envoi, celui des OPTIONS et si oui, comment ?
Précision : en recherchant un peu sur internet, j'ai vu que ce problème était récurant, mais que les solutions proposées étaient aléatoires, pire il semblerait que cela soit consubstantiel au dialogue POST via jQuery ou AngularJs !
Merci pour votre aide
Voici les différents éléments :
Le code AngularJs :
Le service :
Le contrôleur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function updateEmployee(employee) { var url = Config.urlServer + Config.urlUpdateEmployee; $http.post(url, employee); };
Code côté serveur Rest :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $scope.validateEmployee = function (id) { var name = $scope.employee.name; var job = $scope.employee.job; var hiredate = $scope.employee.hiredate; var salary = $scope.employee.salary; var department_id = $scope.selectedOption.department_id; if (id) { var employee = {employee_id: id, name: name, job: job, hiredate: hiredate, salary: salary, department_id: department_id}; EmployeesRest.updateEmployee(employee); } else { var employee = {name: name, job: job, hiredate: hiredate, salary: salary, department_id: department_id}; EmployeesRest.addEmployee(employee); } $location.path('/home'); };
Les trames :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if ($employeeJson != null) { $employee_id = $employeeJson->employee_id; $name = $employeeJson->name; $job = $employeeJson->job; $hiredate = $employeeJson->hiredate; $salary = $employeeJson->salary; $department_id = $employeeJson->department_id; . . . }
Détail :
Client AngularJs
OPTIONS updateEmployee
Request
Response
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3 Access-Control-Request-He... content-type Access-Control-Request-Me... POST Cache-Control no-cache Connection keep-alive Host localhost Origin http://localhost:8383 Pragma no-cache User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
POST updateEmployee
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Access-Control-Allow-Head... content-type Access-Control-Allow-Meth... GET, POST, OPTIONS Access-Control-Allow-Orig... * Connection Keep-Alive Content-Length 1 Content-Type text/html; charset=UTF-8 Date Wed, 16 Sep 2015 06:52:22 GMT Keep-Alive timeout=5, max=100 Server Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3 X-Powered-By PHP/5.6.3
Request
POST
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Accept application/json, text/plain, */* Accept-Encoding gzip, deflate Accept-Language fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3 Cache-Control no-cache Connection keep-alive Content-Length 119 Content-Type application/json;charset=utf-8 Host localhost Origin http://localhost:8383 Pragma no-cache Referer http://localhost:8383/Employees/index.html User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Response
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {"employee_id":"1","name":"KING Alex","job":"President","hiredate":"1981-11-17","salary":"5000.00","department_id" :"1"}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Access-Control-Allow-Head... content-type Access-Control-Allow-Meth... GET, POST, OPTIONS Access-Control-Allow-Orig... * Connection Keep-Alive Content-Length 1 Content-Type text/html; charset=UTF-8 Date Wed, 16 Sep 2015 06:52:22 GMT Keep-Alive timeout=5, max=99 Server Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3 X-Powered-By PHP/5.6.3
Partager