Запрос на отправку Ajax не работает, когда я прикрепляю заголовки, чтобы запросить другое, что он работает [дубликат]

Это чистое решение для JavaScript без каких-либо библиотек или плагинов:

document.addEventListener('click', function (e) {
    if (hasClass(e.target, 'bu')) {
        // .bu clicked
        // Do your thing
    } else if (hasClass(e.target, 'test')) {
        // .test clicked
        // Do your other thing
    }
}, false);

, где hasClass -

function hasClass(elem, className) {
    return elem.className.split(' ').indexOf(className) > -1;
}

Live demo

Кредит относится к Dave и Sime Vidas

Использование более современных JS, hasClass может быть реализовано как:

function hasClass(elem, className) {
    return elem.classList.contains(className);
}

296
задан wonea 10 April 2017 в 20:08
поделиться

5 ответов

То, что вы видели в Firefox, не было фактическим запросом; обратите внимание, что HTTP-метод - OPTIONS, а не POST. Фактически это был «предполетный» запрос, который браузер делает, чтобы определить, разрешен ли междоменный запрос AJAX:

http://www.w3.org/TR/cors /

Заголовок заголовка Access-Control-Request-Headers в предполетном запросе включает список заголовков в фактическом запросе. Затем ожидается, что сервер сообщит, поддерживаются ли эти заголовки в этом контексте или нет, прежде чем браузер отправит фактический запрос.

102
ответ дан karlgold 19 August 2018 в 03:05
поделиться

Попробуйте использовать драгоценный камень rack-cors . И добавьте поле заголовка в ваш вызов ajax.

-8
ответ дан abarisone 19 August 2018 в 03:05
поделиться

И поэтому вы не можете создать бота с Javascript, потому что ваши параметры ограничены тем, что позволяет браузер. Вы не можете просто заказать браузер, который следует за политикой CORS, с которой следуют большинство браузеров, для отправки случайных запросов на другое происхождение и позволяет вам получить ответ просто!

Кроме того, если вы попытались для редактирования некоторых заголовков запросов вручную, как origin-header из инструментов разработчиков, которые поставляются с браузерами, браузер откажется от вашего редактирования и может отправить запрос предпросмотра OPTIONS.

1
ответ дан AlpacaFur 19 August 2018 в 03:05
поделиться

Вот пример того, как установить заголовок запроса в JQuery Ajax Call:

$.ajax({
  type: "POST",
  beforeSend: function(request) {
    request.setRequestHeader("Authority", authorizationToken);
  },
  url: "entities",
  data: "json=" + escape(JSON.stringify(createRequestObject)),
  processData: false,
  success: function(msg) {
    $("#results").append("The result =" + StringifyPretty(msg));
  }
});
357
ответ дан Druzion 19 August 2018 в 03:05
поделиться
  • 1
    thx, я знаю, отправить запрос Ajax с пользовательским заголовком. Моя проблема связана с другим доменом. Все мои пользовательские заголовки помещаются в заголовки Access-Control-Request. это просто безопасность в браузере: кросс-домен. – fingerup 23 November 2012 в 19:36
  • 2
    да, в браузерах междоменные запросы могут вызвать некоторые трудности. вы всегда можете использовать некоторый прокси-скрипт для отправки ваших междоменных запросов – milkovsky 25 November 2012 в 15:14
  • 3
    RequestHeader работает в Firefox? – kk1076 22 February 2013 в 07:40
  • 4
    да. почему нет. у вас есть проблема с этим? – milkovsky 22 February 2013 в 18:05
  • 5
    Как добавить заголовки с помощью API KEY? – Si8 25 January 2017 в 15:22

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

$.ajax({
    url: 'YourRestEndPoint',
    headers: {
        'Authorization':'Basic xxxxxxxxxxxxx',
        'X_CSRF_TOKEN':'xxxxxxxxxxxxxxxxxxxx',
        'Content-Type':'application/json'
    },
    method: 'POST',
    dataType: 'json',
    data: YourData,
    success: function(data){
      console.log('succes: '+data);
    }
  });

Надеюсь, что это ответит на ваш вопрос ...

99
ответ дан G-raph 19 August 2018 в 03:05
поделиться
  • 1
    thx, я знаю, отправить запрос Ajax с пользовательским заголовком. Моя проблема связана с другим доменом. Все мои пользовательские заголовки помещаются в заголовки Access-Control-Request. это просто безопасность в браузере: кросс-домен. – fingerup 14 November 2014 в 14:53
  • 2
    Спасибо, я установил заголовки: «Авторизация: Basic XXXXXX». случайно, а iOS 9 / Safari 9 выбрасывает SyntaxError DOM 12 в проекте. – Mark 1 October 2015 в 15:00
  • 3
    Вы имеете в виду двойные или одинарные кавычки? Я не думаю, что кто-то будет использовать двойные скобки. – DBS 1 June 2016 в 08:47
  • 4
    Двойные или одинарные кавычки (не «скобки») здесь не имеют никакого отношения. – Pere 7 March 2017 в 18:07
Другие вопросы по тегам:

Похожие вопросы: