Сообщение 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 в заголовке. Но пост никогда не извлекает данные, и сам сервер не узнает, что был сделан какой-либо вызов (даже неполный).
Мне, возможно, придется отказаться от этого кода и начать все сначала, но если кто-то столкнулся с этой проблемой раньше, пожалуйста, предложите любое понимание.
Ответы
Ответ 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.");
}
});