Сообщение JSON с настраиваемым полем HTTPHeader - PullRequest
37 голосов
/ 18 августа 2011

Я унаследовал некоторый код, который в конечном итоге станет частью вызова API.Основываясь на существующем коде, вызов представляет собой сообщение для извлечения кода JSON с помощью access_token.Хотя обычно это будет просто и, как и любой другой API, для этого кода требуется наличие настраиваемого поля httpheader для секрета клиента.

Мне удалось выполнить эту работу в Objective C с URLRequest и т. Д., Но теперь, когда я создаю вызов для веб-компонента, я был заблокирован.

Я использую довольно стандартный пост jquery

        $.post('https://url.com', 
        {access_token:'XXXXXXXXXXXXXXXXXXX',
         function(data){
           console.info(data);
         }, 'json');

С HTTP-EQUIV в заголовке.Но сообщение никогда не получает данные, и сам сервер не распознает, что был сделан какой-либо вызов (даже неполный).

Возможно, мне придется удалить этот код и начать все сначала, но если кто-то сталкивался с этой проблемойпрежде, пожалуйста, предложите любую информацию.

Ответы [ 4 ]

119 голосов
/ 18 августа 2011

То, что вы опубликовали, имеет синтаксическую ошибку, но это не имеет значения, поскольку вы не можете передавать HTTP-заголовки через $.post().

Если вы используете версию jQuery> = 1.5, переключитесь на $.ajax()передайте headers ( документы ).(Если вы используете более старую версию jQuery, я покажу вам, как это сделать с помощью опции beforeSend.)

$.ajax({
    url: 'https://url.com',
    type: 'post',
    data: {
        access_token: 'XXXXXXXXXXXXXXXXXXX'
    },
    headers: {
        Header_Name_One: 'Header Value One',   //If your header name has spaces or any other char not appropriate
        "Header Name Two": 'Header Value Two'  //for object property name, use quoted notation shown in second
    },
    dataType: 'json',
    success: function (data) {
        console.info(data);
    }
});
14 голосов
/ 03 октября 2017

если кто-то хочет использовать .post () , то это установит заголовки для всех будущих запросов, сделанных с помощью jquery

$.ajaxSetup({
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
});

, затем создайте свой .post() звонит как обычно.

2 голосов
/ 13 февраля 2017

Я пытался, как вы упомянули, но только первый параметр проходит, а все остальные отображаются на сервере как undefined. Я передаю JSONWebToken как часть заголовка.

.ajax({
    url: 'api/outletadd',
    type: 'post',
    data: { outletname:outletname , addressA:addressA , addressB:addressB, city:city , postcode:postcode , state:state , country:country , menuid:menuid },
    headers: {
        authorization: storedJWT
    },
    dataType: 'json',
    success: function (data){
        alert("Outlet Created");
    },
    error: function (data){
        alert("Outlet Creation Failed, please try again.");        
    }

    });
0 голосов
/ 23 августа 2018

Просто хотел обновить эту ветку для будущих разработчиков.

JQuery> 1.12 Теперь поддерживается возможность изменять каждый маленький фрагмент запроса через JQuery.post ($ .post ({...}). См. Сигнатуру второй функции в https://api.jquery.com/jquery.post/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...