For some reason whenever I try to post some data to my api server I get the following two errors.
OPTIONS http://localhost:3000/test2 Request header field Content-Type is not allowed by Access-Control-Allow-Headers. angular.min.js:99
XMLHttpRequest cannot load http://localhost:3000/test2. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.
Here is my client side angular JS code trying to send some simple data. This code is currently running on an nginx server located under http://localhost:8080
function Controller($scope, $http) {
//scope is all of the elements within the controller declared on the html
var url = 'http://localhost:3000/test2';
$scope.listVaules = function () {
console.log("about to post user id");
console.log($scope.user.userId);
console.log($scope.user.name);
console.log($scope.user.password);
console.log(JSON.stringify($scope.user));
$http({ method: 'Post', url: url, data: JSON.stringify($scope.user) }).
success(function (data, status, headers, config) {
console.log(data);
console.log('success');
}).
error(function (data, status, headers, config) {
console.log('error');
});
};
}
Here is my node JS code to handle that "handles" the request to localhost:3000/test2
// CORS header securiy
app.all('/*', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
//Should post client side json info to the server
app.post(url + '/test2', function(req, res) {
var name = req.body.name;
var userId = req.body.userId;
var password = req.body.password;
console.log(name + ' ' + userId + ' ' + password);
res.send(200);
});
As the error message states, you must acknowledge the Content-Type header in your response to the preflight. This is likely caused by a non-"simple" Content-Type for your request (ostensibly application/json).
So, instead of this:
res.header("Access-Control-Allow-Headers", "X-Requested-With");
...you need this:
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With