当前位置: 首页 > 知识库问答 >
问题:

MFP 8.0 API适用于POSTMAN,但不适用于AJAX

龚博涛
2023-03-14

我能够成功地打电话给邮递员: /mfp/api/az/v1/token和 /mfpadmin/management-apis/2.0/runtimes/mfp/applications

我正在获取从/mfp/api/az/v1/token接收的承载令牌,并将其添加到/mfp/applications的授权标头中。

我收到了来自两者的200个响应,并从每个API中获取了预期的信息。

然后,我选择从POSTMAN为这些工作API调用中的每一个复制ajax代码:

  var getBasic = {
    "async": true,
    "crossDomain": true,
    "url": "https://..../mfp/api/az/v1/token",
    "method": "POST",
    "headers": {
      "authorization": "Basic YXBpYzptZnBhcGlj",
      "grant_type": "client_credentials",
      "cache-control": "no-cache",
      "postman-token": "05a672e5-6141-fd6f-82e2-b282d68dce35",
      "content-type": "application/x-www-form-urlencoded"
    },
    "data": {
      "grant_type": "client_credentials",
      "scope": "settings.read"
    }
  }

  $.ajax(getBasic).done(function (response) {
    console.log(response);
    var accessToken = response.access_token;
    console.log(accessToken);
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://....:8445/mfpadmin/management-apis/2.0/runtimes/mfp/applications",
      "method": "GET",
      "headers": {
        "authorization": "Bearer " + accessToken,
        "cache-control": "no-cache"
        }
      }
    console.log(settings);
    $.ajax(settings).done(function (response) {
      console.log("response: " + response.totalListSize);
    });

  });

然而,当我在我的WebUI中运行此命令时,我从/令牌得到了200个响应,但从我的/mfp/应用程序得到了401个(未经授权的)响应

为什么这在postman中有效,但在Web UI(Chrome)中无效?

共有1个答案

姬墨竹
2023-03-14

您正在使用的mfpadmin服务及其endpoint(应用程序)不需要您尝试获取的访问令牌。它需要控制台的用户名和密码。因此,当您使用承载访问令牌时,它会因401未经授权而失败,因为这不是服务器允许访问应用程序endpoint所期望的。

我做了以下工作:

>

  • 安装了ExpressRequest节点包以创建各种代理。这是必需的,因为您不能简单地从浏览器向服务器发出AJAX请求(您会从浏览器收到与跨源请求相关的错误):

    npm init
    npm install --save express
    npm install --save request
    

    创建了代理。js(请注意,此代码特定于mfpadmin):

    var express = require('express');
    var http = require('http');
    var request = require('request');
    
    var app = express();
    var server = http.createServer(app);
    var mfpServer = "http://localhost:9080";
    var port = 9081;
    
    server.listen(port);
    app.use('/', express.static(__dirname + '/'));
    console.log('::: server.js ::: Listening on port ' + port);
    
    // Reverse proxy, pipes the requests to/from MobileFirst Server
    app.use('/mfpadmin/*', function(req, res) {
         var url = mfpServer + req.originalUrl;
         console.log('::: server.js ::: Passing request to URL: ' + url);
         req.pipe(request[req.method.toLowerCase()](url)).pipe(res);
    });
    

    在HTML文件中引用一个实现。js文件和jQuery:

    <html>
        <head>
            <script src="/jquery-3.1.1.min.js"></script>
            <script src="/main.js"></script>
        </head>
    
        <body>
    
        </body>
    </html>
    

    总的来说。js文件:

    $.ajax({
       "crossDomain": true,
       "url": "http://localhost:9081/mfpadmin/management-apis/2.0/runtimes/mfp/applications",
       "method": "GET",
       "headers": {
           "authorization": "Basic YWRtaW46YWRtaW4=",
           "Access-Control-Allow-Origin": "*",
           "cache-control": "no-cache" 
       }      
    }).done(function(response) {
        console.log(response);
    });
    

    Basic YWRtaW46YWRtaW4=Basic Auth的表示形式,用户名admin和密码admin

    作为响应,我收到了以下JSON。
    项目数组包含当前在MobileFirst Server中注册的应用程序。

  •  类似资料:
    • 关于redash,我有一个问题。这是请求。在上,它工作得很好。查询示例: 但在axios上,它抛出: 网络错误 并在控制台上写: 访问XMLHttpRequest at

    • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

    • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

    • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

    • “技术人员”之前的简报对改装并不陌生,但我遇到了这种奇怪的行为,我很难理解和修复。我有两个web服务,在Postman和iOS中都能正常工作,但只有一个在改装中工作,而另一个不工作, 为我辩护,我可以说我得到了(未经授权的)响应,这意味着我能够点击服务器并得到API开发者辩护的结果,他说它在邮递员和其他设备中工作,所以不是服务问题 如果有改装专家告诉我,为了得到这个错误,我背后可能在做什么改装?

    • 我一直在使用声纳3.2 同样的配置,当我升级到SonarQube 4.4时 声纳项目属性: 请帮助整理这些例外 问候, KP