1 pièce(s) jointe(s)
Deux requêtes au lieu d'une lors d'un POST
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 :
Code:
1 2 3 4
| function updateEmployee(employee) {
var url = Config.urlServer + Config.urlUpdateEmployee;
$http.post(url, employee);
}; |
Le contrôleur
Code:
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');
}; |
Code côté serveur Rest :
Code:
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;
. . .
} |
Les trames :
Pièce jointe 188027
Détail :
Client AngularJs
OPTIONS updateEmployee
Request
Code:
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 |
Response
Code:
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 |
POST updateEmployee
Request
Code:
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 |
POST
Code:
1 2
| {"employee_id":"1","name":"KING Alex","job":"President","hiredate":"1981-11-17","salary":"5000.00","department_id"
:"1"} |
Response
Code:
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 |