我已经在stackoverflow上查看了以下问题,但我没有尝试做什么.
Ajax Authorization Request headers fails again and again
jQuery Ajax Unauthorized 401 Error
Sending credentials with cross-domain posts?
这是我目前拥有的代码:
$(document).ready(function() {
$.ajax({
url: 'http://sample.domain.com/script.PHP?name1=value1&jsonp=?',type: 'GET',dataType: 'json',contentType: "application/json",beforeSend: function(xhr) {
xhr.setRequestHeader("Authentication","Basic ZnJvbWFwcGx********uOnRoM24zcmQ1UmgzcjM=") //Some characters have been replaced for security but this is a true BASE64 of "username:password"
},success: function(data){
alert(data);
}
});
});
我拥有的子域名受.htpasswd文件的密码保护.使用base64编码中使用的用户名/密码组合,网站的登录对我来说很好.
我在不同的域上运行此脚本而不是url所在的域,这就是为什么我有jsonp =?在网址中
从浏览器中的控制台获取的响应是:
获取http://sample.domain.com/script.PHP?name1=value1\u0026amp;jsonp=jsonp1334177732136 401(需要授权)
最佳答案
JSONP使用脚本标记代理.它不支持自定义标头.你控制了端点吗?如果是这样,请查看启用CORS,或在GET字符串中传递身份验证密钥.
使用jsonp时,JQuery会将您的URL“ajax”请求转换为:
var json9409d0sf0d9s0df90 = function() {
//some callback logic here.
}
并追加?callback = json9409d0sf0d9s0df90
然后你的服务器说
echo $_GET['callback] . "(" . $json . ")";
并将其作为回复发回
json9409d0sf0d9s0df90({some: data});
由浏览器执行并由jQuery的神奇处理程序处理,使其像普通的ajax回调一样响应.