从javascript

时间:2015-05-19 15:26:03

标签: javascript wso2 esb

我有一个非常大的问题 WSO2 ESB。

我通过 WSO2 ESB ver实现了一个非常简单的Web服务。 4.8.1 下, 称为TestProxy,具有安全性(并使用默认配置) 关于安全)。 如果我通过Chrome网络浏览器调用地​​址为https://10.20.105.145:8244/services/TestProxy/test_query/test_oper_query的网络服务就可以了: - 第一个chrome问我用户名和密码; - 然后Web服务在网页中返回输出 (在我的例子中是json格式的输出)。

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

我使用以下代码(用户名和密码(右)是admin 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代码 为了解决这个问题。

谢谢。

此致

1 个答案:

答案 0 :(得分:0)

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

此外,您添加的那些标头(Access-Control- *)应该由服务器发送,而不是由ajax客户端发送。

如果您遇到与CORS相关的问题,请查看以下问题: Disable same origin policy in Chrome