gpt4 book ai didi

jQuery AJAX 自定义 header

转载 作者:行者123 更新时间:2023-12-03 22:22:58 26 4
gpt4 key购买 nike

我正在尝试向 iContact API 执行请求,该请求要求我使用自定义 header 进行身份验证 (http://developer.icontact.com/documentation/authenticate-requests)。这是我的代码:

$.ajax({
type: "GET",
url: "https://app.icontact.com/icp/a/",
contentType: "application/json",
beforeSend: function(jqXHR, settings){
jqXHR.setRequestHeader("Accept", "application/json");
jqXHR.setRequestHeader("Api-Version", iContact_API_version);
jqXHR.setRequestHeader("Api-AppId", iContact_appID);
jqXHR.setRequestHeader("Api-Username", iContact_username);
jqXHR.setRequestHeader("API-Password", iContact_appPassword);}
});

由于某种原因,请求未通过。但是,当我手动执行相同的请求(使用 Chrome REST 控制台)时,它工作得很好。如果我取出自定义 header (API-*),请求就会通过,但身份验证当然会失败,并且我会返回常规 HTML 页面。

我切换到 Firefox 并检查了请求/响应 header :

请求:

Host    app.icontact.com
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
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
Connection keep-alive
Origin http://184.72.61.244
Access-Control-Request-Me... GET
Access-Control-Request-He... api-appid,api-password,api-username,api-version

回应:

HTTP/1.1 302 Found
Date: Tue, 14 Jun 2011 23:43:56 GMT
Server: Apache/2.2.9 (Debian)
Set-Cookie: intellicontact_phpsess=1c7ca333017b47f46edd893dae584781; path=/; domain=.icontact.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: https://app.icontact.com/icp/login/sentry.php?relurl=https%3A%2F%2Fapp.icontact.com%2Ficp%2Fa%2F&sess=
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Connection: close
Content-Type: text/html; charset=utf-8

知道这里出了什么问题吗?

谢谢!

最佳答案

beforeSend Hook 仅适用于 $.ajaxSetup(),因此如果您只想将其添加到 $.ajax(),您只需使用headers 属性。

<小时/>

如果您想向单个请求添加自定义 header (或 header 集),则只需添加 headers 属性:

// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});

如果您想向每个请求添加默认 header (或 header 集),请使用$.ajaxSetup():

$.ajaxSetup({
headers: { 'x-my-custom-header': 'some value' }
});

// Sends your custom header
$.ajax({ url: 'foo/bar' });

// Overwrites the default header with a new header
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });

如果您想向每个请求添加一个 header (或一组 header ),请使用 beforeSend Hook 和 $.ajaxSetup():

$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('x-my-custom-header', 'some value');
}
});

// Sends your custom header
$.ajax({ url: 'foo/bar' });

// Sends both custom headers
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });

编辑(更多信息):需要注意的一件事是,使用ajaxSetup,您只能定义一组默认 header ,并且只能定义一个发送之前。如果多次调用 ajaxSetup,则只会发送最后一组 header ,并且只会执行最后一个发送前回调。

来源:https://stackoverflow.com/a/14655768/1581725

关于jQuery AJAX 自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6351593/

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