使用具有安全用户名和密码的 API 即身份验证

Consuming API Which is having Secure Username and Password i.e Authentication

如何在移动应用程序中使用 IBM Cast iron API。 API 正在使用用户名和密码(需要 401 授权)等身份验证。 这里的问题是如何使用 Ajax 调用 验证 javascript 中的 API。

这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            $("#bSubmit").click(function () {
                alert("Button Clicked");
                var xmlString;
                var username = 'myusername';
                var password = 'mypassword';
                $.ajax({
                    url: 'MYURL',
                    crossDomain: true,
                    headers: {
                        "Authorization": "Basic " + btoa(username + ":" + password)
                    },

                    type: "POST", //This is what you should chage
                    dataType: "xml",
                    contentType: "application/xml; charset=utf-8",
                    }).done(function (response) {
                        alert("Sucess"+response);
                            xmlString = (new XMLSerializer()).serializeToString(response);
                             $("#displayout").html(xmlString);
                    }).fail(function (request, textStatus, errorThrown) {
                        alert("wrong");
                        alert(textStatus + " : " + errorThrown.toString());
                 });
                });
          });
    </script>
</head>
<body>
    <input type="text" name="1" id="txt1">
    <input type="submit" name="b" value="Submit" id="bSubmit"> 
    <div id="displayout">
    </div>
</body>

我在 firefox 和 IE 中添加了 CORS 过滤器。这在 IE 中运行良好。但它不适用于 firefox 和 Chrome.

在 IE 中: 我通过以下 link 更改了设置 它对我有用。

在 firefox 控制台中显示如下:

跨源请求被阻止:同源策略不允许读取位于 https://MYURL 的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。

在 Chrome 控制台中显示如下:

选项https://MYURL 401(需要授权)

XMLHttpRequest 无法加载 https://MYURL。无效的 HTTP 状态代码 401

你能帮帮我吗

使用 Java 我得到了回应。但是使用 AJAX 调用仍然是与授权问题相同的错误。

Java 基于代码:

public class Sample {
public static void main(String[] args) throws Exception {
     final String userid = "username";
     final String pwd = "password";
     String addressXML="";
     String url="URL";
    //Create an instance of HttpClient.
    final HttpClient client = new HttpClient();
    //com.sun.jersey.api.client.ClientResponse response;
    final URL uri = new URL(url);
    final GetMethod getmethods = new GetMethod(url);
    AuthScope authscope = new AuthScope(uri.getHost(), uri.getPort());
    Credentials defaultcreds = new UsernamePasswordCredentials(userid, pwd);
    client.getState().setCredentials(authscope, defaultcreds);
    getmethods.setDoAuthentication(true);
    client.getParams().setAuthenticationPreemptive(true);
    final int responseCode = client.executeMethod(getmethods);
    if (responseCode == 200) {
        InputStream in = getmethods.getResponseBodyAsStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        StringBuilder out = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            out.append(line);
        }
        addressXML = out.toString();
        System.out.println("Resultent Data" + addressXML);   //Prints the string content read from input stream  nodes 
        reader.close();
    } else {
        throw new RuntimeException("Failed : HTTP error code : " + responseCode + " address rs service error!");
    }
}}