0

В настоящее время я разрабатываю свое приложение, и я нахожусь на том этапе, где я могу начать тестировать сообщения из Twilio. Я настроил свой сервер на цифровом океане с открытым IP-адресом, и мое приложение Nodejs слушает вызовы от Twilio. Я также установил сообщение своего номера «request url» на «http://username:[email protected]/messages» с «HTTP POST».Twilio не отправляет кредиты в заголовках при указании имени пользователя: формат пароля в URL-адресе

Когда я отлаживаю заголовки, я не вижу заголовки «авторизации». Я что-то упустил? Любая помощь очень ценится! Ниже приведен код.

var headerValues = bag.req.headers.authorization.split(' '); 
 

 
    console.log(bag.req.headers); 
 

 
    var scheme = headerValues[0]; 
 
    if (scheme === 'Basic') { 
 
    var credentials = headerValues[1]; 
 
    var decoded = new Buffer(credentials, 'base64').toString().split(':'); 
 
    bag.req.creds = { 
 
     userName: decoded[0], 
 
     password: decoded[1], 
 
     authType: 'basic' 
 
    } 
 
    }

+0

Что происходит, когда вы запрашиваете, что URL в браузере? –

+0

Я не вижу заголовки, когда я пользуюсь браузером. Я использовал как firefox, так и chrome. Код выглядит следующим образом (nodejs) if (! Bag.req.headers.authorization) console.log ('Заголовки не найдены !!!'); – Ragsden

+0

{хозяин: '198.XXX.XXX.XXX ', соединение:' keep-alive ', ' cache-control ':' max-age = 0 ', accept:' text/html, application/xhtml + xml, application/xml; q = 0.9, image /webp,*/*;q=0.8 ', ' upgrade-insecure-requests ':' 1 ', ' user-agent ':' Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как и Gecko) Ubuntu Chromium/47.0.2526.106 Chrome/47.0.2526.106 Safari/537.36 ', ' accept-encoding ':' gzip, deflate, sdch ', ' accept-language ':' en-US, en; q = 0.8 ' , 'if-none-match': 'W/"5a-2753714540"'} – Ragsden

ответ

0

Я использую ту же установку, как и вы в нескольких центрах обработки вызовов я построил.

Если вы используете настройку прокси-сервера, которая требует имени пользователя: password @ перед IP-адресом, то ваша проблема, скорее всего, будет связана с этим прокси-сервером, если вы можете получить доступ к этому коду, перейдя непосредственно к фактическому IP-адресу сервера, как я заметил ниже. Однако вы не указали использование прокси-сервера, просто используя цифровую капельницу океана, поэтому я отвечаю, полагая, что у вас нет прокси-установки.

Так что если у вас есть прокси-установка, убедитесь, что вы можете сначала получить доступ к IP-адресу сервера.

Кроме того, если это только дополнительные переменные, которые нужно пройти через вас может быть лучше, добавляя их после IP-адреса

, например xxx.xxx.xxx.xxx/username/password

Тогда получите их с req.params

, например (да и это будет работать с почтовыми данными, так как его просто часть URL, а не фактическое командный пункт ГЭТ)

router.post('/sms/:username/:password'), function(req, res, next){ 
    username = req.params.username; 
} 

Сначала вы не хотели бы направлять свой URL-адрес запроса «http://username:[email protected]/messages» с «HTTP POST».

Если вы не имеете домен направлен на ваш IP-адрес все же вы хотите, чтобы ваш запрос URL, чтобы быть

https://198.xxx.xxx.xxx/inbound/sms

{Замена/въездной/смс с любой маршрут вы используете}

Затем в верхней части вашего маршрута (я использую экспресс, поэтому моя установка может выглядеть иначе, чем ваша)

У меня есть библиотека node.js twilio

, twilio = require('twilio') 
    , capability = new twilio.Capability(sid, auth) 
    , client = require('twilio')(sid, auth) 

Тогда вот пример моего/смс маршрута

router.post('/sms', function(req, res, next){ 
    var sid = req.body.SmsSid; 
    var from = req.body.From; 
    var to = req.body.To; 
    var date = Date(); 
    var body = req.body.Body; 
    if(req.body.NumMedia > 0){ 
    code to handle MMS 
    } 

    Code to handle SMS data 
    res.send("Completed"); 
}); 
+0

Благодарим вас за ответ. Моя конечная точка/сообщения api может получать сообщения от нескольких абонентов, причем Twilio является одним из вызывающих абонентов. Следовательно, я ожидаю имя пользователя и пароль в заголовках, а не как параметры URL. Я хочу иметь один стандартный интерфейс для аутентификации. В зависимости от вызывающего я преобразую сообщение во внутренний формат. Я заметил, что когда я предоставляю http: // имя пользователя: [email protected]/messages как webhook в Github, я могу видеть заголовки. Итак, я не уверен, почему Twilio не устанавливает заголовки? – Ragsden

+0

Это имеет смысл. Я так понимаю, вы были в состоянии подтвердить, что, когда вы посещаете из других источников, отправляются заголовки? Если это так, вам может потребоваться связаться с поддержкой twilio. Возможно, они не поддерживают отправку заголовков таким образом, хотя я не могу себе представить, почему. Я знаю, что я лично пытался отправить заголовки, как и вы, и не смог получить node.js, чтобы распознать их вообще. Поэтому, когда проблема существует, все будет зависеть от того, работает ли она с другими системами. – StevenDStanton

+0

Я смог подтвердить, что github устанавливал заголовки auth при вызове webhook. Мой код получал необходимую информацию из заголовков. Я открыл вопрос поддержки с Twilio, и я не получаю никакого отношения. – Ragsden