POSTing к защищенному ресурсу базовой авторизации доступа - PullRequest
2 голосов
/ 06 марта 2012

Возникла проблема при размещении на ресурсе, защищенном базовой аутентификацией доступа. Вот код, я использую запрос @ mikeal :

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);
});

У меня { [Error: Parse Error] bytesParsed: 0 } по ошибке и undefined как в ответе, так и в теле. Если я удаляю часть «user: password», я правильно получаю 401 HTTP Basic: доступ запрещен.

Знаете ли вы, если есть способ POST JSON на защищенный ресурс, как в моем случае? Если нет, то я думаю, что мне придется пойти по пути модуля http, но я оставляю его как последний ресурс, так как он намного более многословен.

ОБНОВЛЕНИЕ: Чтобы сделать это как можно более простым, я переместил этот файл в новый каталог и выполнил npm install request. Проблема ушла, я проверил, откуда взялся byteParsed, и обнаружил, что он находится в «грозном» состоянии, которое требуется для Express, который был у меня в каталоге, где я проводил этот тест. Немного смущен прямо сейчас.

Ответы [ 2 ]

4 голосов
/ 30 января 2013

Я сделал это так:

var options = {                 
  method: 'POST',             
  uri: 'http://your.url.com/',
  form: {                  
    field1: 'somevalue',               
    field2: 666.66  
    },                       
  headers: {               
    'Authorization': 'Basic ' + new Buffer("username:password").toString('base64')                  
  }
};                                         
request(options, function(error, response, body) {  
  // do stuff
});
2 голосов
/ 06 марта 2012

Вы должны добавить заголовок к вашему запросу с этими правилами:

http://en.wikipedia.org/wiki/Basic_access_authentication

В основном вы должны закодировать строку: имя пользователя: пароль в base64 и добавить закодированную строку в заголовок http:

Авторизация: Basic "Base64 (имя пользователя: пароль)"

Я не знаю, возможно ли добавить заголовок с помощью jquery или javascript. К сожалению.

Смотрите здесь: http://api.jquery.com/extending-ajax/#Transports

...