我正在尝试对我们 Intranet 中的服务器进行 AJAX 调用,但我似乎无法正确获取标题。
我的调用代码如下:
$('#btn-create-ticket').click( function(event) {
$.ajax({
type: "GET",
dataType: "json",
beforeSend: function (xhr)
{
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.setRequestHeader ("Authorization", "Basic " + btoa("username" + ":" + "password"));
},
url: "http://myservername:3336/sdata/slx/dynamic/-/accounts%28%27"+$("#slx-accountid").val()+"%27%29/Contacts?format=json",
async: false,
success: function(result){
var obj = jQuery.parseJSON( result );
//REMAINING CODE TO GO HERE
}
});
});
这是对 SalesLogix SData API 的调用,它应该返回一段 JSON。我的问题是我不断收到以下错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myservername:3336/sdata/slx/dynamic/-/accounts%28%27A6UJ9A0013SN%27%29/Contacts?format=json. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
所以,经过一番研究,我添加了我认为正确的标题,但我仍然无法让它工作。Fiddler 也在告诉我一些没有意义的事情。如果我查看 Fiddler 中的 HEADERS,我可以清楚地看到我期望的标题:
access-control-allow-origin,authorization
但是,在 AUTH 选项卡下,它指出:
No Authorization Header is present.
我也尝试过(如许多帖子中所建议的那样)将 dataType 更改为 JSONP 但这没有效果(可能是因为我使用的是 JQuery v2.1.4,在这些情况下似乎默认为这个)。
有人有什么建议吗?
干杯斯
编辑
现在得到:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myservername:3336/sdata/slx/dynamic/-/accounts...... (Reason: CORS preflight channel did not succeed).