我在html中有一个登录页面,我使用了Js函数来调用api。代码是
function submitdetails() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var params = JSON.stringify({ username: username, password: password });
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE ) {
if (xmlhttp.status == 200){
if(xmlhttp.responseText == "AdminLogin"){
// Redirect Url to Ldap Configuration settings page
window.location.href = "Configure.html";
}else{
var cook = document.cookie;
document.getElementById("login_form").innerHTML = xmlhttp.responseText;
//document.getElementById("login_form").innerHTML = cook
}
}
else{
document.getElementById("login_form").innerHTML = "Error";
}
}
};
xmlhttp.open("POST","http://127.0.0.1:8000/login/",true);
xmlhttp.send(params);
}
以上代码在IE中运行得非常好。但是当我在Chrome中尝试它时,fucntion返回“else语句”,它会返回错误。
答案 0 :(得分:0)
似乎这是一个CORS问题。您的后端可能有这样的条目:
Access-Control-Allow-Origin: *
这在IE上很好用,但在Firefox和Chrome上却没有。
Firefox和Chrome需要准确的域名规范 Access-Control-Allow-Origin标头。对于具有身份验证的服 这些浏览器不允许" *"在这个标题中。该 Access-Control-Allow-Origin标头必须包含值 客户端传递的Origin头。
因此您必须调整后端CORS设置。 这里是来自MDM
的CORS的标头定义