【问题标题】:Moqui REST API call fail with error code 403Moqui REST API 调用失败,错误代码 403
【发布时间】:2017-06-25 17:47:02
【问题描述】:

从我的 Angular 2 应用程序中,我尝试从 Moqui 获取数据,但请求总是失败并显示错误代码 403。

这里是 REST API 调用实现

获取示例(){ 让 url = 'http://localhost:8080/rest/s1/example/examples' let headers = new Headers({ '授权': '基本 am9obi5kb2U6bW9xdWk='}); headers.append('Accept', 'application/json, text/plain, */*'); headers.append('Content-Type', 'application/json; charset=UTF-8'); let options = new RequestOptions({ headers: headers }); 让 response = this.http.get(url, options).map(res => res.json()); 返回响应; }

Moqui 日志:-

REST Access Forbidden (no authz): 用户 null 未被授权在 REST 路径 /example/examples 上查看

还有一个类似的问题Moqui Rest Nginx 但从答案中我不知道我必须在哪里更改 Moqui 中的设置。

在客户端控制台上的错误是:-

XMLHttpRequest 无法加载 http://localhost:8080/rest/s1/example/examples。预检响应包含无效的 HTTP 状态代码 403

但是对于像 YARC 这样的休息客户端,它可以工作:-

【问题讨论】:

    标签: moqui


    【解决方案1】:

    您必须对 REST API 调用进行身份验证,但配置为不需要身份验证的服务 REST API 路径除外(例如 mantle-usl 组件中 mantle.rest.xml 文件中的 /mantle/my 端点)。

    您已进行身份验证,但还有另一个步骤:授权。通常,如果需要 authc,则还需要授权。这通常通过种子数据中的数据库记录完成,也可以使用默认 Moqui 运行时(即 moqui/moqui-runtime 存储库)中包含的系统应用程序添加。

    在 MantleSetupData.xml 文件中有一个服务 REST API 调用的授权设置示例。与屏幕授权的主要区别在于要使用的工件类型是“AT_REST_PATH”。这是 GitHub 上的那个文件(就在文件顶部附近):

    https://github.com/moqui/mantle-usl/blob/master/data/MantleSetupData.xml

    Moqui 中与 REST 请求有关的大多数事情的最佳文档目前位于实际处理传入请求(即处理 /rest 路径)的“rest.xml”文件中的 cmets 中。你可以在 GitHub 上看到这个:

    https://github.com/moqui/moqui-runtime/blob/master/base-component/webroot/screen/webroot/rest.xml

    【讨论】:

    • mantle REST API 也有同样的问题OPTIONS http://192.168.0.101:8080/rest/s1//mantle/parties 403 (Forbidden) XMLHttpRequest cannot load http://192.168.0.101:8080/rest/s1//mantle/parties. Response for preflight has invalid HTTP status code 403
    • 对于像 YARC 这样的 REST 客户端,示例 API 仅适用于授权标头。用屏幕截图更新了问题。
    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多