我正在使用 ajax 调用基于 WCF REST 的服务。
ajax 方法在页面加载之前调用。
我希望在ajax请求的标头中发送一个“Token”。在 fiddler 中,我看到的是这样的:
1.) 请求头中没有令牌的服务请求。(AJAX 调用失败)
2.) 使用标头中的令牌对同一服务发出请求。(AJAX 调用已通过)
之后,在 chrome 和 safari 上一切正常。但 IE 10 和 Mozilla 上只有一个服务调用。因此,由于请求标头中没有令牌,因此服务调用在 IE 10 和 Mozilla 中失败。
这是我调用的方法:
function callservice (method, serviceUrl, params, successHandler, errorHandler) {
$.ajax({
crossDomain: true,
type: method,
url: serviceUrl,
beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization", Token); },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successHandler,
error: errorHandler
});
function photos(data) {
alert(data);
console.log(data);
};
}
我控制 Web 服务和应用程序(调用此 Web 服务)。当应用程序和 Web 服务都托管在本地主机上时,不会出现此问题。在这种情况下,只有一次成功的服务调用。但是跨域调用的时候会出现两次AJAX调用。
我的问题是为什么 AJAX 请求在第一次尝试时不发送令牌?
为什么令牌只在第二个 AJAX 调用中发送?
任何形式的帮助将不胜感激。