2015-05-19 97 views
1

我有一个非常大的问题 WSO2 ESB。从javascript拨打WSO2 ESB服务

我实现了一个非常简单的Web服务,通​​过WSO2 ESB版本。 4.8.1, 在安全性上(并且关于安全性的默认配置为 )调用了TestProxy。 如果我把与Chrome网络浏览器的地址https://10.20.105.145:8244/services/TestProxy/test_query/test_oper_query Web服务是一切OK: - 第一铬问我的用户名和密码; - 然后web服务返回给我,在网页中,输出 (在我的情况是一个输出为json格式)。

但是,当我从javascript调用Web服务 (例如部署在tomcat应用服务器中)时,我遇到了很大的问题。

我使用下面的代码(用户名和密码(右)为admin管理员):

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script> 


function callDSS() { 


    $.ajax({ 


     , 
     url: "https://10.20.105.145:8244/services/TestProxy/test_query/test_oper_query", 

     dataType:"json", 

     type: "GET", 

     headers: { 
     "Access-Control-Allow-Origin": "*", 
     "Access-Control-Allow-Credentials": "true", 
     "Access-Control-Allow-Methods": "GET, PUT, POST, DELETE, OPTIONS", 
     "Access-Control-Allow-Headers": "Content-Type, Content-Range, Content-Disposition, Content-Description", 

     "Authorization": "Basic " + btoa("admin:admin") 
     }, 
     //async: false, 
     error: function (jq, status, message) { 
      console.info('A jQuery error has occurred. Status: ' + status + ' - Message: ' + message+JSON.stringify(jq)); 

     }, 

     success: function() { 
     alert('Success!'); 
    } 
}); 

}; 

</script> 

</head> 
<body onload="callDSS()"> 
</body> 
</html> 

它给我的错误: 无法加载资源:服务器与401状态回应(未经授权) test_invoke.html:1 XMLHttpRequest无法加载https://10.20.105.145:8244/services/TestProxy/test_query/test_oper_query。无效的HTTP状态代码401

你能帮我解决这个问题吗?

如果你能给我一个正确的javascript代码 为了解决这个问题。

谢谢。

问候

回答

0

如果您要访问从JavaScript您服务,您应该使用一个API或服务端点,而不是tryit代理,这需要一个身份验证的用户。

而且,这些头you're增加(接入控制 - *)都应该由服务器,而不是Ajax客户端发送。

如果你面对CORS相关的问题,请看看以下问题: Disable same origin policy in Chrome

+0

您好菲利普,感谢您的回答。问题是我们被迫从web服务中获得json格式。只有WSO2 DSS,我们(从Web服务)只有xml格式。此外:为了尊重我们的安全,对我们来说,认证是强制性的。 – Fabrizio67

+0

法布里奇奥,你能给出关于你的设置的更多细节吗?你有DSS服务器和ESB吗?在DSS或ESB上应用安全约束在哪里? –