AEM 6.x:如何临时/以编程方式禁用链接检查器?(尝试将带有链接的JSON返回到浏览器)

AEM 6.x:如何临时/以编程方式禁用链接检查器?(尝试将带有链接的JSON返回到浏览器),aem,sling,Aem,Sling,因此,我有一个Sling servlet,它从另一个API(我们称之为APIX)读取数据,APIX以JSON格式提供数据 当我调试代码时,我从APIX得到的响应似乎是完整的 当我将从APIX获得的JSON传递到浏览器时,我可以看到AEM已经“检查”了JSON中的所有链接。我不希望AEM对我的数据做任何事情 基于此,我在代码中添加了以下行: protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse

因此,我有一个Sling servlet,它从另一个API(我们称之为APIX)读取数据,APIX以JSON格式提供数据

当我调试代码时,我从APIX得到的响应似乎是完整的

当我将从APIX获得的JSON传递到浏览器时,我可以看到AEM已经“检查”了JSON中的所有链接。我不希望AEM对我的数据做任何事情

基于此,我在代码中添加了以下行:

protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
  LinkCheckerSettings linkCheckerSettings = LinkCheckerSettings.fromRequest(request);
  linkCheckerSettings.setIgnoreExternals(true);

  //body of the code here

  response.setCharacterEncoding("UTF-8");
  response.setContentType("application/json;charset=UTF-8");

  printWriter.write(jsonResponse);

  linkCheckerSettings.setIgnoreExternals(false);
}
没有效果。我还能看到这些绳子

<img src="/libs/cq/linkchecker/resources/linkcheck_o.gif" alt="invalid link: _blank\\" title="invalid link: _blank\\" border="0">

到处都是

然后,我尝试禁用链接检查器(通过),但仍然没有效果

我怎么做

我通过在浏览器中键入以下URL来调用Slng servlet:

谢谢

编辑:

这是我从APIX(在IntelliJ上调试)获得的JSON数据示例:

“链接”:[

我不认为建议在全局级别禁用LinkChecker。您可以通过其他几种方法实现这一点,并将限制仅限于某些用例-

  • 如果链接包含特殊前缀,如
    tel:
    mailto:
    等,则必须将它们添加到
    /system/console/configMgr
    中的
    日CQ链接检查器服务中,才能禁用这些链接的链接检查器
  • 将此参数
    x-cq-linkchecker=“valid”
    添加到
    标记中,以确保链接在AEM中标记为有效-即使AEM认为链接无效
  • 您还可以使用
    x-cq-linkchecker=“skip”
    跳过此元素的链接检查器验证

  • 更新上述参数(2.和3.)后,您可能会遇到缓存问题,在开始测试之前,请尝试删除
    /var/linkchecker
    中的内容。

    我不认为建议在全局级别禁用linkchecker。您可以通过其他几种方法实现这一点,并将限制仅限于某些用例-

  • 如果链接包含特殊前缀,如
    tel:
    mailto:
    等,则必须将它们添加到
    /system/console/configMgr
    中的
    日CQ链接检查器服务中,才能禁用这些链接的链接检查器
  • 将此参数
    x-cq-linkchecker=“valid”
    添加到
    标记中,以确保链接在AEM中标记为有效-即使AEM认为链接无效
  • 您还可以使用
    x-cq-linkchecker=“skip”
    跳过此元素的链接检查器验证

  • 更新上述参数(2.和3.)后,您可能会遇到缓存问题,在开始测试之前,请尝试删除
    /var/linkchecker
    中的内容。

    有多种处理特殊url模式的技术,请参阅。这是一本非常好的链接检查器指南

    技巧1:编码方式(不推荐,因为不可维护)。添加类x-cq-linkchecker=“skip”

    技巧2:禁用链接检查器。绝对不建议在作者中使用。作者应该看到断开的链接可见。但是建议在发布中禁用,而不是显示丑陋的断开链接图标

    技巧3:添加特殊。您的链接检查器应如下所示:

    有多种处理特殊url模式的技术,请参阅。还有一本非常好的链接检查器指南

    技巧1:编码方式(不推荐,因为不可维护)。添加类x-cq-linkchecker=“skip”

    技巧2:禁用链接检查器。绝对不建议在作者中使用。作者应该看到断开的链接可见。但是建议在发布中禁用,而不是显示丑陋的断开链接图标

    技巧3:添加特殊。您的链接检查器应如下所示:

    你能分享APIX返回的示例链接吗?它是标准的
    http
    /
    https
    url吗?我问的原因是-有些链接包含特殊前缀,如
    tel:
    mailto:
    等,-在这种情况下,你必须在
    日CQ链接检查服务中添加它们以防止AEM链接检查失败在这种情况下,om会介入。你能分享APIX返回的示例链接吗?它是标准的
    http
    /
    https
    url吗?我问的原因是-有些链接包含特殊前缀,如
    tel:
    mailto:
    等,-在这种情况下,你必须将它们添加到
    Day CQ链接检查服务中在这种情况下,避免AEM链接检查器启动。添加
    x-cq-linkchecker=“有效"
    在sightly code programmative中?@SubSul使用APIX的JSON数据和我在浏览器上看到的内容更新了原始帖子。您能阅读吗?谢谢!@mrjayviper查看您更新的详细信息,不应该将skip参数添加到标记中。本质上,您必须在DOM上呈现的元素上添加参数。另外,af添加参数后,您是否在测试前尝试清除/var/linkchecker中的缓存内容?我刚刚在一个独立模块上进行了尝试,效果很好。@MrJayPiper同样,如果APIX中的链接被替换为一个属性,而该属性未在
    Day CQ link Checker Transformer
    -
    重写元素中列出,则您必须进行这里有一个条目。让我知道它是如何运行的。很高兴提供帮助。@SubSul我在来自APIX的JSON数据中没有img标记。它是一个a标记,但不知何故被AEM替换为一个img标记。是否不添加
    x-cq-linkchecker=“valid”
    在sightly code programmative中?@SubSul使用APIX的JSON数据和我在浏览器上看到的内容更新了原始帖子。您能阅读吗?谢谢!@mrjayviper查看您更新的详细信息,不应该将skip参数添加到标记中。本质上,您必须在DOM上呈现的元素上添加参数。另外,af在添加参数之后,在测试之前是否尝试清除/var/linkchecker中的缓存内容?我刚刚在一个独立的模块上进行了尝试,结果是成功的
    "LINKS":[
            "<a x-cq-linkchecker=\"skip\" target=\"_blank\" href=\"http:\/\/www.google23.com\">[Web Link]<\/a>"
            ]
    
    "LINKS":[
             "<img src="/libs/cq/linkchecker/resources/linkcheck_o.gif" alt="invalid link: _blank\\" title="invalid link:_blank\\" border="0">                        [Web Link]<\/a>"
            ]