0

我们已经运行 Forge v2 一个多月了。我们延迟切换,因为我们的 Forge Web 应用程序(在节点上)是高度定制的,并且迁移是一个手动过程。

一周前,我注意到我们的应用程序没有正确处理来自我们 API 的非 200OK HTTP 状态。问题似乎是缺少错误对象的 responseText 属性。这是一个非常重要的属性,因为当请求不是 200OK 时,我们会以 JSON 格式返回错误信息。

v2 文档引用了一个content属性,responseText但没有两个属性 - https://trigger.io/modules/request/current/docs/index.html

我可以确认此功能之前有效,因为当我将 all.js 文件恢复到 v2 升级之前的日期时,它又开始工作了。在对源代码进行了一些扎根之后,问题似乎出在all.js文件中的这个方法上。

    e.ajax({
        url: "/_forge/proxy/" + p.match(/\/\/([^\/:]+)/)[1].split("").reverse().join("").replace(/\./g, "/") + "/",
        type: "POST",
        data: t,
        dataType: "text",
        timeout: w,
        success: A &&
        function(E) {
            try {
                if (x == "xml") {
                    var D, C;
                    if (window.DOMParser) {
                        D = new DOMParser();
                        C = D.parseFromString(E, "text/xml")
                    } else {
                        C = new ActiveXObject("Microsoft.XMLDOM");
                        C.async = "false";
                        C.loadXML(E)
                    }
                    E = C
                } else {
                    if (x == "json") {
                        E = JSON.parse(E)
                    }
                }
            } catch(F) {}
            A(E)
        },
        error: function(E, C, D) { //E variable has the responseText property, but is not passed along in the callback function
            v({
                message: "api.ajax with " + JSON.stringify(B) + "failed. " + C + ": " + D,
                type: "EXPECTED_FAILURE",
                status: C,
                statusCode: E.status,
                err: D
            })
        }
    })

解压缩 all.js 文件后,它位于您声明 request.ajax 对象的 6800 行标记附近。

重现步骤

  1. 使用带有错误回调的 forge.request 进行 API 调用
  2. 让 PHP 文件返回非 200OK 状态的 JSON
  3. 在错误回调内部,没有用于访问 API 响应文本的 responseText 属性

我的触发器控制面板没有显示我需要更新,据我所知,所有模块都是最新的。

这是伪造功能的回归还是预期的功能?

4

0 回答 0