【问题标题】:How to use an API with an app Fiori (SAPUI5)如何在应用 Fiori (SAPUI5) 中使用 API
【发布时间】:2018-09-25 19:40:55
【问题描述】:

我正在尝试在我的应用程序中使用此 Mercedes Benz API。在控制器内部我有一个 ajax 请求:

    onInit : function () {
        var oModel = new JSONModel();
        var url = 'https://api.mercedes-benz.com/image/v1/vehicles/WDDZH3HB8JA394212/components?apikey=my_apikey';

        $.ajax({
            beforeSend: function() {
                //armamos la url y la asignamos a una var       
            },
            url: url,
            type: 'GET',
            accepts: "application/json",
            success: function (resp) {
                console.log(resp)
            },
            error: function (jqXHR, estado, error) {
                console.log(error +":" + " " + estado)
            },
            timeout: 10000
        });
    },

我只想回复为OK,但遇到了一些错误:

请求头字段 X-XHR-Logon 不允许 预检响应中的 Access-Control-Allow-Headers。

回复

如果您查看文档 API,我只需要 API 密钥。也许我做错了什么?如果您在 FIORI 应用程序中使用 API,请指导我,将不胜感激

注意:我的 fiori 服务器在本地,所以我们不使用 SCP

【问题讨论】:

  • 如果你在beforeSend事件中加入了调试语句,你能在请求的头部看到x-xhr-logon吗?
  • 你知道SAP云平台的目的地吗? help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/… 您可以通过为您尝试调用的 URL 创建目标来解决此问题
  • 我的 fiori 服务器在本地,所以我们不使用 SCP :C
  • @Jorg 我休息了一下,但我在哪里可以看到?这是我第一次使用 ajax :C 也许还有另一种方式
  • //armamos la url y la asignamos a una var 替换为debugger;,并在函数中添加导入参数:beforeSend: function(request)。然后打开浏览器的控制台。 Chrome 将停止,您可以检查 request 的值,方法与 SE80 类似。检查“来源”选项卡。

标签: javascript ajax sapui5


【解决方案1】:

如果你真的想做一个 XHR,你需要像这样在 neo-app.json 中将 APIKEY 列入白名单

{
    "welcomeFile": "/webapp/index.html",
    "routes": [{
        ...
    ],
    "sendWelcomeFileRedirect": true,
    "headerWhiteList": [
        "APIKey"
    ]
}

否则我强烈建议使用目的地,这里解释:

【讨论】:

  • 这是我的情况,没有 SCP,我的 fiori 服务器就在本地
  • 我怀疑任何人都可以解决这个令不撤销安全模式的人满意的问题。也许您应该在 SAP onPrem 中构建 OData 服务,调用您的外部 API 并将其提供给您的应用程序。我在这里看不到任何其他解决方案。是的,你也可以从 abap 发出 HTTP 请求......这会撤销安全性,因为你的 onPrem 必须与互联网通信......
  • 也许在 fiori 服务器上使用了代理?而且我从来没有建立过与互联网通信的 odata:O 我不知道
  • 这是 ABAP 执行 http 请求,您可以将其放入 odata 服务并在您的应用程序中处理响应。 blogs.sap.com/2014/11/09/…
  • 谢谢!但我认为我必须发出 https 请求,否则我会在 abap 中收到错误,有可能吗?
猜你喜欢
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2022-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多