gpt4 book ai didi

javascript - 将 DHIS 2 API 与 Jquery 跨域问题一起使用

转载 作者:行者123 更新时间:2023-11-30 05:33:55 26 4
gpt4 key购买 nike

我正在尝试实现一个使用 DHIS 2 API 的 javascript 应用程序。我花了一整天时间尝试使用 Jquery 进行身份验证。

API 表示 ( https://www.dhis2.org/doc/snapshot/en/user/html/ch32s02.html ) 您需要使用 base 64 身份验证。我试图在 Jquery 中实现它,但遇到了跨域问题。我曾尝试使用 DHIS 2 演示 ( https://apps.dhis2.org/dev/ ) 进行身份验证,但没有成功。然后我在我的本地计算机上设置了一个本地副本,但我仍然遇到同样的问题,因为 DHIS 2 在不同的端口上运行。

我已经尝试过 jsonp 和 CROS,但都是徒劳的。

这是我目前正在尝试的代码

$(function(){
var base_url = "http://apps.dhis2.org/demo/";
var login = 'dhis-web-commons-security/login.action?authOnly=true';
var current_user_url = 'api/users.json';
var params = {
'j_username':'admin',
'j_password':'district'
};


function base_64_auth(user,password) {
var tok = user + ':' + password;
var hash = Base64.encode(tok);
return "Basic " + hash;
}

var auth = base_64_auth('admin','district');

$.ajax({
url : base_url+login,
data : params,
type : 'POST',
dataType : 'text',
crossDomain : true,
xhrFields : {
'withCredentials':true
},
beforeSend : function(req) {
req.setRequestHeader('Authorization',auth);
},
success : function(data){
console.log('authentification succeded');
alert('success');
//userInfo();
},error : function(xhr,type,msg) {
console.log(xhr.responseText);
console.log(type);
console.log(msg);
}
});

)};

我正在使用一个简单的 base64 编码库 www.webtoolkit.info/javascript-base64.html#.U9_O2XVdWkA

检查控制台我看到这个错误:

XMLHttpRequest 无法加载 http://apps.dhis2.org/demo/dhis-web-commons-security/login.action?authOnly=true。请求被重定向到 'http://apps.dhis2.org/demo/dhis-web-commons/security/login.action?failed=true',这是不允许跨域请求的需要预检。

如果有人曾经使用过该 API,我将不胜感激他的帮助,或者如果您知道任何其他方式(包括其他语言)我可以与 API 对话,我可能会去尝试。

非常感谢。

最佳答案

跨域请求通常会被浏览器拦截。我自己正在使用 DHIS2 API 作为小组项目的一部分,我们通过运行以下命令在 chrome 中禁用同源策略来解决这个问题:

google-chrome --disable-web-security

请注意,您仍然需要验证对演示服务器的请求,而且这个解决方案在任何方面都不是理想的。我猜最好的方法是在本地部署服务器并将所有文件放在服务器上,以便请求发生在与服务器相同的域中。另请注意,在 chrome 中禁用网络安全时,使用其他浏览器浏览邮件、facebook 等可能是个好主意。

关于javascript - 将 DHIS 2 API 与 Jquery 跨域问题一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25126722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com