gpt4 book ai didi

jquery - 如何使用 jQuery 的 getJSON() 方法传递请求 header ?

转载 作者:IT王子 更新时间:2023-10-29 03:26:06 25 4
gpt4 key购买 nike

我需要执行一个 getJSON() 请求,但我该如何传递授权和自定义 header ?

我遇到的问题是请求 header 使用的是名称,而不是值。 URL 正在通过 fiddler 中的手动请求显示为作为选项而不是 GET/Url 插入。

这是我们正在尝试做的在 fiddler 中运行良好的示例;我如何使用 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');
}

Fiddler 正常请求 header :

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

Fiddler 通过 Ajax() 请求 header :

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

最佳答案

我同意 sunetos 的观点,您必须使用 $.ajax 函数才能传递请求 header 。为此,您必须为 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 等工具中观察流量,您会看到传入了两个请求 header :

  • 值为 Foo 的 securityCode
  • 值为 Bar 的 key

setHeader 函数也可以内联在 $.ajax 选项中,但我想调用它。

希望这对您有所帮助!

关于jquery - 如何使用 jQuery 的 getJSON() 方法传递请求 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3229823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com