Javascript 跨域jQuery ajax调用不起作用
我有这个代码的问题,我似乎无法让它工作。这次调用返回的典型错误是“加载资源失败:服务器响应状态为401(未授权)”Javascript 跨域jQuery ajax调用不起作用,javascript,jquery,ajax,cross-domain,Javascript,Jquery,Ajax,Cross Domain,我有这个代码的问题,我似乎无法让它工作。这次调用返回的典型错误是“加载资源失败:服务器响应状态为401(未授权)” 问题是您试图访问的资源受到基本身份验证的保护 您可以在jQuery回调中使用beforeSend,添加带有身份验证详细信息的HTTP头,例如: beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", "Basic XXXXXX"); } 或者,您可以使用jQueryajaxSetup $.aja
问题是您试图访问的资源受到基本身份验证的保护 您可以在jQuery回调中使用
beforeSend
,添加带有身份验证详细信息的HTTP头,例如:
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic XXXXXX");
}
或者,您可以使用jQueryajaxSetup
$.ajaxSetup({
headers: { 'Authorization': "Basic XXXXX" }
});
编辑
指向上述功能的几个链接
- 用户名和密码被加入一个字符串
,结果字符串使用Base64进行编码“Username:password”
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
我也遇到了这个问题,不知何故,由于客户端Web服务的限制(JSONP、XDR、CORS=true),所有来自internet的解决方案要么失败,要么不适用 为此,我在页面中添加了一个iframe,它位于客户端中;s服务器。因此,当我们将数据发布到iframe时,iframe然后将其发布到web服务。因此,消除了跨域引用 我们添加了一个双向原点检查,以确认只有经过授权的页面才会向iframe发送数据和从iframe发送数据 希望能有帮助
<iframe style="display:none;" id='receiver' name="receiver" src="https://iframe-address-at-client-server">
</iframe>
//send data to iframe
var hiddenFrame = document.getElementById('receiver').contentWindow;
hiddenFrame.postMessage(JSON.stringify(message), 'https://client-server-url');
//The iframe receives the data using the code:
window.onload = function () {
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function (e) {
var origin = e.origin;
//if origin not in pre-defined list, break and return
var messageFromParent = JSON.parse(e.data);
var json = messageFromParent.data;
//send json to web service using AJAX
//return the response back to source
e.source.postMessage(JSON.stringify(aJAXResponse), e.origin);
}, false);
}
//将数据发送到iframe
var hiddenFrame=document.getElementById('receiver').contentWindow;
postMessage(JSON.stringify(message),'https://client-server-url');
//iframe使用以下代码接收数据:
window.onload=函数(){
var eventMethod=window.addEventListener?“addEventListener”:“attachEvent”;
var eventer=window[eventMethod];
var messageEvent=eventMethod==“attachEvent”?“onmessage”:“message”;
事件器(messageEvent,函数(e){
var origin=e.origin;
//如果原点不在预定义列表中,则中断并返回
var messageFromParent=JSON.parse(e.data);
var json=messageFromParent.data;
//使用AJAX将json发送到web服务
//将响应返回到源
e、 source.postMessage(JSON.stringify(aJAXResponse),e.origin);
},假);
}
同源策略不允许您进行跨域AJAX请求。资源受到基本身份验证的保护错误的密码和用户名?我尝试在浏览器中访问该json文件,它也表示该请求未经授权使用这些凭据。请检查您的凭据。@gronostaj如果实施了CORS,这是不正确的。感谢您的回复。我不确定在何处添加beforesend功能以及在何处输入密码。是xhr.setRequestHeader(“授权”,“基本myusername:mypassword”)?@Michael,我刚刚添加了如何生成基本身份验证的信息。你很接近。但不要在周围加空格:在最后一个字符串后面使用Base64。非常感谢您的帮助。不幸的是,现在我遇到了一个更深层次的问题,zendesk似乎不允许跨域AJAX请求。太遗憾了,我在报名前没有读过细则;)
<iframe style="display:none;" id='receiver' name="receiver" src="https://iframe-address-at-client-server">
</iframe>
//send data to iframe
var hiddenFrame = document.getElementById('receiver').contentWindow;
hiddenFrame.postMessage(JSON.stringify(message), 'https://client-server-url');
//The iframe receives the data using the code:
window.onload = function () {
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function (e) {
var origin = e.origin;
//if origin not in pre-defined list, break and return
var messageFromParent = JSON.parse(e.data);
var json = messageFromParent.data;
//send json to web service using AJAX
//return the response back to source
e.source.postMessage(JSON.stringify(aJAXResponse), e.origin);
}, false);
}