Подтвердить что ты не робот

Сообщение JSON с настраиваемым полем HTTPHeader

Я унаследовал некоторый код, который в конечном итоге станет частью вызова 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 в заголовке. Но пост никогда не извлекает данные, и сам сервер не узнает, что был сделан какой-либо вызов (даже неполный).

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

4b9b3361

Ответ 1

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

Если вы используете версию jQuery >= 1.5, переключитесь на $.ajax() и передайте параметр headers (docs). (Если вы используете более старую версию 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);
    }
});

Ответ 2

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

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

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

Ответ 3

Я попробовал, как вы уже упоминали, но только первый параметр проходит и все остальные появляются на сервере как 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.");        
    }

    });