我正在尝试向内部网中的服务器发出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中的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).