Пользовательский заголовок AJAX представлен дважды

Я работаю над вызовом API для пользовательского API, который я построил. Прекрасно работает с звонками через curl. Но у него есть проблемы с Ajax. Я понимаю cors и считаю, что это может быть связано с cors.

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

Когда я удаляю пользовательский заголовок, он отправляет его только один раз.

$( document ).ready(function() {
$.ajax({
url: 'https://www.website.com/test.php',
type: 'GET',
beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("access_token", '1111'); },
datatype: 'application/json',

success: function(data, textStatus, jqXHR) {
alert('yes');

},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('no');
console.log( errorThrown );
}});
});

На стороне PHP у меня есть определенные общие вещи.

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: access_token");
header("Cache-Control: no-cache, must-revalidate");

У кого-нибудь есть идеи?

ОБНОВИТЬ:
Ниже я прикрепил два сериализованных массива, которые оба были размещены в БД в одно и то же время по одному и тому же запросу. Один без пользовательского заголовка, а другой с пользовательским заголовком. Я не понимаю, как это могло произойти, предпечатная проверка не должна ничего публиковать в БД. Я сделал аналогичный вызов близкой копии этого API, и он не публикует два запроса.

Звоните без шапки
a: 11: {s: 4: «Host»; s: 14: «www.websitehere.com»; s: 10: «Connection»; s: 10: «keep-alive»; s: 13: «Cache- Контроль «; s: 9:» макс-возраст = 0 «; s: 29:» Access-Control-Request-метод «; s: 3:» GET «; s: 6:» Происхождение «; s: 20:»http://websitehere.com«; s: 10:» Пользователь-агент «; s: 104:» Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 41.0.2272.76 Safari / 537.36 «; с: 30:» Access-Control-Request-Headers «; s: 20:» принять, access_token «; s: 6:» принять «; s: 3:»/«; S: 7:» Referer «; s: 34:»http://websitehere.com/test_ajax.php«; s: 15:» Accept-Encoding «; s: 19:» gzip, deflate, sdch «; s: 15:» Accept-Language «; s: 14:» en-US, en; q = 0,8 «; }

Звоните с пользовательским заголовком
a: 9: {s: 4: «Host»; s: 14: «www.websitehere.com»; s: 10: «Connection»; s: 10: «keep-alive»; s: 6: «Accept» ; s: 3:»/«; S: 6:» Происхождение «; s: 20:»http://websitehere.com«; s: 12:» access_token «; s: 64:» qUTWcy3qO0Cxc4ffkuU27mmvqyDpLNz4ecB0KTu5PLUllKFb1VhaCbgarfqlDAag «; s: 10:» Пользователь-агент «; s: 104:» Mozilla / 5.0 (K11): Apple, Linux (X11) x86; x86): Linux ) Chrome / 41.0.2272.76 Safari / 537.36 «; с: 7:» Реферер «; с: 34:»http://websitehere.com/test_ajax.php«; s: 15:» Accept-Encoding «; s: 19:» gzip, deflate, sdch «; s: 15:» Accept-Language «; s: 14:» en-US, en; q = 0,8 «; }

Я изменил некоторые значения, конечно.

2

Решение

Я не уверен, почему я наконец сел и проверил разницу между ними в jsfiddle. Добавление пользовательского заголовка добавляет в предварительном просмотре OPTIONS. Я не уверен, почему это двойной вызов помимо этого. Единственный возможный результат — вызов кешированной версии, а затем принудительное обновление материала, которое может произойти, если на вашем веб-сервере установлена ​​неправильно настроенная версия memcache или какой-либо другой плагин кэширования.

Примеры проблемы с заголовком
С заголовком

Пример вопроса без заголовка
введите описание изображения здесь

Как видно из инструментов разработчика с добавленным заголовком, он выполняет предварительный запрос параметров и без него получает только 404.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector