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

标签 javascript ajax api authentication cast-iron

如何在移动应用程序中使用 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!");
    }
}}

关于javascript - 使用具有安全用户名和密码的 API,即身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32356690/

相关文章:

JavaScript/HTML5/jQuery 拖放上传 - "Uncaught TypeError: Cannot read property ' 文件的未定义”

javascript - 带有 EXTJ 的 Ajax 文本字段

javascript - 澄清 Typescript 的目标和库设置的功能

javascript - Foundation 6 捕捉​​向下钻取点击事件

javascript - 如果不知道页面加载需要多长时间,我们如何设置超时

javascript - YouTube API 需要 postMessage()。为什么?

json - 基于 JSON 的 REST API 上的 PUT 最常见的预期行为是什么?文档替换或部分更新)?

android - 三星用手指悬停 API

javascript - dotenv 未加载 .env 文件

javascript - 用户索引页面上的 Ajax 按钮未更新 - Rails 教程 4