我正在使用 ajax 调用基于 WCF REST 的服务。
在页面加载之前调用 ajax 方法。我希望在 ajax 请求的标头中发送一个“令牌”。在提琴手这就是我所看到的:
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 调用中发送?
任何形式的帮助将不胜感激。