Использование строки Json в заголовке Http

недавно я столкнулся с какой-то странной проблемой с использованием HTTP-заголовка ( добавление нескольких пользовательских заголовков http-запросов mystery) чтобы избежать проблемы в то время, я поместил поля в строку json и добавил эту строку json в заголовок вместо добавления этих полей в отдельные заголовки http.

например, вместо

request.addHeader("UserName", mUserName);
request.addHeader("AuthToken", mAuthorizationToken);
request.addHeader("clientId","android_client");

Я создал строку json и добавил ее в один заголовок

String jsonStr="{"UserName":"myname","AuthToken":"123456","clientId":"android_client"}";
request.addHeader("JSonStr",jsonStr);

Так как я новичок в написании Отдых и работа с Http-материалом, я не знаю, правильно ли мое использование или нет. Я был бы признателен за понимание этого.

ссылки

http://lists.w3.org/Archives/Public/ietf-http-wg/2011OctDec/0133.html

4 ответов


да, JSON разрешен в заголовках HTTP.

по словам HTTP в спецификации (который ссылается на ARPA Internet messages spec для формата заголовка), единственное ограничение заключается в том, что ваш заголовок


вообще говоря, вы не отправляете данные в заголовке для REST API. Если вам нужно отправить много данных, лучше всего использовать HTTP-сообщение и отправить данные в теле запроса. Но похоже, что вы пытаетесь передать учетные данные в заголовке, который используют некоторые REST API. Вот это пример передачи учетных данных в REST API для службы с именем SMSIfied, которая позволяет отправлять SMS-сообщения через Интернет. В этом примере используется базовая аутентификация, которая является распространенным методом для REST API. Но вам нужно будет использовать SSL с этой техникой, чтобы сделать его безопасным. вот пример о том, как реализовать базовую аутентификацию с WCF и REST.


из того, что я понимаю, использование строки json в опции заголовка не столько злоупотребление использованием, сколько использование http DELETE для http GET, таким образом, даже было предложение использовать json в HTTP-заголовке. Конечно, более глубокие идеи по-прежнему приветствуются, и принятый ответ все еще должен быть дан.


Base64encode его перед отправкой. Как JSON Web Token сделать это.
Вот пример NodeJs:

var myJsonStr = JSON.stringify(myData);
var headerFriendlyStr = Buffer.from(myJsonStr, 'utf8').toString('base64');
res.addHeader('foo', headerFriendlyStr);

расшифруйте его, когда вам нужно прочитать:

var myBase64Str = req.headers['foo'];
var myJsonStr = Buffer.from(myBase64Str, 'base64').toString('utf8');
var myData = JSON.parse(myJsonStr);