我正在尝试调用托管在我的localhost上的Web服务。这个AJAX调用对我有用,我可以看到在请求的标头中发送“授权”令牌给服务。
$.ajax({
type: method,
url: serviceUrl,
beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization", Token); },
contentType: "application/json; charset=utf-8",
dataType: "json",
ProcessData: true,
cache: false,
success: successHandler,
error: errorHandler
});
但是这次我尝试调用Azure云托管的服务并且相同的AJAX调用有效,但是它不发送标题内容。我正在使用fiddler来检查请求的标头内容。有什么我可以做的,以便标题具有“授权”令牌?
答案 0 :(得分:2)
可能是跨域政策限制。你必须确保ajax调用和服务在同一个域内,否则你将不得不做一些黑客攻击才能使它工作。
答案 1 :(得分:0)
有security policies at the browser level来阻止跨域AJAX调用。有多种解决方法(such as using XML instead of JSON或this jQuery plugin),但最“正确”的似乎是using JSONP instead of JSON,我认为只需更改dataType
即可在你的AJAX电话中:
$.ajax({
//...etc.
dataType: "jsonp",
//...etc.
});
如果这不是问题,请尝试将return true;
添加到beforeSend
处理程序。 The request gets canceled if that returns false
,但我不知道如果它根本没有返回值会发生什么。