Токен csrf в развернутом экземпляре узла bluemix

Привет, я использовал кнопку развертывания в bluemix в правом верхнем углу этой страницы.

https://alchemy-language-demo.mybluemix.net/?cm_mc_uid=69990450306114782046823&cm_mc_sid_50200000=1478206651

для создания сервера узла языка Alchemy. Идет нормально -

https://alchemylanguage-nodejs-encekxdev-216.mybluemix.net/

но когда я пытаюсь опубликовать его с помощью почтальона, я получаю ответ «внутренняя ошибка сервера».

Проверяя журналы сервера, он, кажется, отвечает на запрос с

код: «EBADCSRFTOKEN», ошибка: «недопустимый токен csrf»

Даже если я попытаюсь отправить csrf с версии веб-страницы сайта, это все равно не сработает.

Я чувствую, что что-то упустил в конфигурации сервера, но не знаю что. Я не очень хорошо разбираюсь в серверах и т. д., так что извините, если это очень просто.

РЕДАКТИРОВАТЬ - я должен упомянуть, что я также пытался отправить apikey в запросе, который я получил из раздела учетных данных службы в сервисе алхимии, битом с приборной панели, но возникает та же ошибка.

EDIt. Вызов API, который я делаю, выглядит следующим образом:

POST https://alchemylanguage-nodejs-encekxdev-216.mybluemix.net/api/keywords

с заголовками:

text: 'это какой-то фиктивный текст, который я сделал'

Я также попытался добавить apikey в заголовки.

Спасибо.


person jperry1147    schedule 03.11.2016    source источник
comment
Не могли бы вы добавить более подробную информацию о вашем почтовом запросе? Какой API вы используете? Я пробовал с некоторыми API, и post у меня работает нормально (как с помощью curl, так и с почтальоном).   -  person Alex da Silva    schedule 04.11.2016
comment
Спасибо @AlexdaSilva за то, что попробовали - я отредактировал вопрос, чтобы показать, какой API я использую (я думаю - если нет, пожалуйста, не стесняйтесь указывать мне). Спасибо еще раз!   -  person jperry1147    schedule 05.11.2016


Ответы (1)


Вы не отправляете свое приложение, вы должны отправить его в API. Вот ссылка с URL-адресом API и различными примерами:

http://www.ibm.com/watson/developercloud/alchemy-language/api/v1

Например, вот curl-запрос для ключевых слов:

curl -X POST \ -d "outputMode=json" \ -d "url=http://www.twitter.com/ibmwatson" \ "https://gateway-a.watsonplatform.net/calls/url/URLGetRankedKeywords?apikey=$API_KEY"

Убедитесь, что вы экспортируете $API_KEY в свою среду, прежде чем запускать приведенную выше команду. Вы можете найти $API_KEY в экземпляре AlchemyAPI, созданном в Bluemix.

person Alex da Silva    schedule 05.11.2016
comment
Еще раз спасибо и извините, если я упустил суть, но я использую сервер Node, созданный мастером на их странице, который имеет этот маршрут для публикации (их демонстрационная страница также публикует это) app.post('/api/: method', function(req, res, next) { var method = req.params.method; if (typeof alchemyLanguage[method] === 'function') { alchemyLanguage[method](req.body, function(err, response ) { if (err) { return next(err); } return res.json(response); }); } else { next({code: 404, error: 'Unknown method: ' + method }); } }) ; что добавить? - person jperry1147; 05.11.2016
comment
пример приложения защищен пакетом csurf npm. Этот пакет требует начальной связи для обмена токеном crsf между клиентом и сервером, поэтому вы не сможете отправить почтовую команду от почтальона (этот пакет как раз для того, чтобы этого избежать). Более подробную информацию можно найти здесь: github.com/pillarjs/understanding-csrf. Опять же, если вы хотите просто отправлять почтовые команды, вы можете напрямую использовать Watson API, как я уже упоминал в своем ответе, нет смысла пытаться использовать API через образец приложения. - person Alex da Silva; 08.11.2016