我有一个现有的java客户端,上面有IOS,andriod开发人员准备了一个简单的基于http请求的应用程序。我正试图在HTML5应用程序中实现同样的目标。
现在所面临的困难是在AJAX请求中发送一个自定义的头部,比如带有加密登录细节的授权。
我试图在各种REST客户端上实现相同的功能,并能够在请求头中发送“授权:基本XXXXXX=”。并得到正确的json反应“

但是,如果我尝试使用ajax调用相同,则无法发送类似的请求头。请求发送为选项而不是GET,授权标记没有作为头正确地运行,而是以"Access-Control-Request-Headers:authorization".的形式进行
这是我试过的片段。
<script>
//$.ajaxSetup({ headers: { 'Authorization': 'Basic XXXXXXX='} })
// get form data for POSTING
var vFD = new FormData(document.getElementById('upload_form'));
var oXHR = new XMLHttpRequest();
oXHR.open('POST', "https://123.123.123.123:229/");
//oXHR.send(vFD);
var body = 'Basic XXXXXXX=';
var mUrl = "https://123.123.123.123:229/?json";
var client = new XMLHttpRequest();
client.open('GET', mUrl, true);
client.withCredentials = true;
client.crossDomain = true,
client.setRequestHeader('Authorization', 'Basic XXXXXXX=');
client.send(body);
simpleHttpRequest();
function simpleHttpRequest() {
alert("calling ");
var headers = {
"Authorization": "Basic XXXXXXX="
};
$.ajaxSetup({ "headers": headers });
$.ajaxSetup({ 'cache': false });
$.ajax({
type: "GET",
withCredentials: true,
// data: {
// address: 'http://www.google.com'
// },
crossDomain: true,
Headers: { "Authorization": "Basic XXXXXXX=" },
dataType: "jsonp",
url: mUrl,
cache: false
});
}
xhrToSend();
function xhrToSend() {
// Attempt to creat the XHR2 object
var xhr;
try {
xhr = new XMLHttpRequest();
} catch (e) {
try {
xhr = new XDomainRequest();
} catch (e) {
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {
statusField('\nYour browser is not' +
' compatible with XHR2');
}
}
}
}
xhr.withCredentials = true;
xhr.open('GET', mUrl, true);
xhr.setRequestHeader("Authorization", "numberOfBLObsSent");
xhr.send();
};
</script>所有不同的方法都失败了。请帮帮我。
提前谢谢。
发布于 2013-12-16 15:57:44
这个问题与请求的跨域性质有关。当您发出包含自定义标头的跨域请求时,该请求首先通过OPTIONS方法“预置”到服务器,并且服务器必须使用报头Access-Control-Allow-Headers: your-custom-header进行响应。一旦收到这一消息,ajax客户端将(自动)发出实际请求。
https://stackoverflow.com/questions/20610433
复制相似问题