I am experiencing a problem while POSTing to a resource which is protected by basic access authentication.
Here is the code, I am using @mikeal’s request:
request.post({
uri: "http://user:password@mysite.com/resource",
json: {
"id": "1",
"par1": "a",
"par2": "b"
}
}, function (error, response, body) {
console.log(error);
console.log(response);
console.log(body);
});
I have { [Error: Parse Error] bytesParsed: 0 } in error and undefined in both response and body. If I remove the “user:password” part I correctly get a 401 HTTP Basic: Access denied.
Do you know if there’s a way to POST JSON to a protected resource like in my case? If not, I believe I’ll have to go the http module way, but I’m leaving that as a final resource since it’s a lot more verbose.
UPDATE: To have this as simple as possible I’ve moved this file in a new directory and did a npm install request. The problem went away, I checked from where the byteParsed come from and found it’s in “formidable” which is required by express, which I had in the directory where I was running this test. A bit confused right now.
You must add an header to your request with this rules:
http://en.wikipedia.org/wiki/Basic_access_authentication
Basically you must encode the string: username:password in base64 and add encoded string in an http header:
Authorization: Basic “Base64(username:password)”
I don’t know if is possible add header with jquery or javascript. Sorry.
Look here: http://api.jquery.com/extending-ajax/#Transports