Как я могу передать заголовки запроса с getJSON jQuery () метод?

Я должен сделать a getJSON() запрос, но как я передаю авторизацию и пользовательские заголовки?

Я получаю проблемы, что заголовок запроса берет имя, но НЕ значения. URL показывают через ручной запрос в скрипаче к тому, чтобы быть вставленным в то, поскольку опции вместо ДОБИРАЮТСЯ/URL.

Вот пример того, что мы пытаемся сделать, который хорошо работает в скрипаче; как я могу копировать это с функцией Ajax?

GET /Service.svc/logins/gdd53535342/houses/vxcbdfsdg/people/dsgsdggd?format=json HTTP/1.1
User-Agent: Fiddler
Authorization: Basic rgbg423535fa23y4436
X-PartnerKey: df3fgeg-g5g6-b55b-f3d2-dsgg353523
Host: 154.34.53.54:2757

Код JavaScript:

xhr = new XMLHttpRequest();

$(document).ready(function() {
  $.ajax({
    url: 'http://localhost:437/service.svc/logins/jeffrey/house/fas6347/devices?format=json',
    type: 'GET',
    datatype: 'json',
    success: function() { alert("Success"); },
    error: function() { alert('Failed!'); },
    beforeSend: setHeader       
  });   
});

function setHeader(xhr) {
  xhr.setRequestHeader('Authorization', 'Basic faskd52352rwfsdfs');
  xhr.setRequestHeader('X-PartnerKey', '3252352-sdgds-sdgd-dsgs-sgs332fs3f');
}

Скрипач нормальные заголовки запроса:

GET /service.svc/logins/jeffrey/house/fas6347/devices?format=json HTTP/1.1
User-Agent: Fiddler
Authorization: Basic faskd52352rwfsdfs
X-PartnerKey: 3252352-sdgds-sdgd-dsgs-sgs332fs3f
Host: localhost:437

Скрипач через Ajax() Заголовки запроса:

OPTIONS service.svc/logins/jeffrey/house/fas6347/devices?format=json HTTP/1.1
Host: localhost:437
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Origin: http://ipv4.fiddler:61975
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization,x-partnerkey
72
задан APerson 18 February 2015 в 19:34
поделиться

2 ответа

Я согласен с sunetos в том, что вам придется использовать функцию $ .ajax для передачи заголовков запросов. Для этого вам нужно будет написать функцию для обработчика события beforeSend, который является одним из параметров $ .ajax (). Вот краткий пример того, как это сделать:

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
      $(document).ready(function() {
        $.ajax({
          url: 'service.svc/Request',
          type: 'GET',
          dataType: 'json',
          success: function() { alert('hello!'); },
          error: function() { alert('boo!'); },
          beforeSend: setHeader
        });
      });

      function setHeader(xhr) {
        xhr.setRequestHeader('securityCode', 'Foo');
        xhr.setRequestHeader('passkey', 'Bar');
      }
    </script>
  </head>
  <body>
    <h1>Some Text</h1>
  </body>
</html>

Если вы запустите приведенный выше код и посмотрите трафик в таком инструменте, как Fiddler, вы увидите два переданных заголовка запроса:

  • securityCode со значением Foo
  • ключ доступа со значением Bar

Функция setHeader также может быть встроена в параметры $ .ajax, но я хотел вызвать ее.

Надеюсь, это поможет!

81
ответ дан 24 November 2019 в 12:40
поделиться

Метод $. GetJSON () - это сокращение, которое не позволяет вам указывать такие дополнительные параметры. Для этого вам нужно использовать полный метод $. Ajax () .

Примечание в документации по адресу http://api.jquery.com/jQuery.getJSON/ :

Это сокращенная функция Ajax, которая эквивалентна:

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

Так что просто используйте $. Ajax () и укажите все необходимые дополнительные параметры.

15
ответ дан 24 November 2019 в 12:40
поделиться
Другие вопросы по тегам:

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