首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AEM 6.x:如何临时/以编程方式禁用链接检查器?(尝试将带有链接的JSON返回到浏览器)

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

Stack Overflow用户
提问于 2018-05-31 07:43:35
回答 2查看 1.2K关注 0票数 0

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

当我调试我的代码时,似乎从APIX得到的响应是完好无损的。

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

基于这个Adobe page,我在我的代码中添加了以下几行:

代码语言:javascript
复制
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);
}

没有效果。我仍然可以看到这些字符串

代码语言:javascript
复制
<img src="/libs/cq/linkchecker/resources/linkcheck_o.gif" alt="invalid link: _blank\\" title="invalid link: _blank\\" border="0">

到处都是。

然后我尝试禁用链接检查器(通过configMgr/Day CQ Link Checker Transformer),但仍然没有效果。

我该怎么做呢?

我通过在浏览器中键入以下URL来调用Slng servlet:http://localhost:4502/servlets/getpublications?name=john.smith

谢谢!

编辑:

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

代码语言:javascript
复制
"LINKS":[
        "<a x-cq-linkchecker=\"skip\" target=\"_blank\" href=\"http:\/\/www.google23.com\">[Web Link]<\/a>"
        ]

这就是我在浏览器上得到的东西(a标签不知何故被img标签替换了)

代码语言:javascript
复制
"LINKS":[
         "<img src="/libs/cq/linkchecker/resources/linkcheck_o.gif" alt="invalid link: _blank\\" title="invalid link:_blank\\" border="0">                        [Web Link]<\/a>"
        ]

我尝试过对x-cq-linkchecker使用有效和跳过,但没有任何反应。

天CQ链路检查器变压器配置屏幕截图

EN

回答 2

Stack Overflow用户

发布于 2018-05-31 10:08:26

我不认为在全局层面上禁用LinkChecker是推荐的。有更多的方法可以实现这一点,并将限制仅限于某些用例-

  1. 如果链接包含特殊前缀,如tel:mailto:等,则必须将它们添加到Day CQ Link Checker Service中,以禁用这些链接的LinkChecker。
  2. 将此参数x-cq-linkchecker="valid"添加到<代码>D9标记,以确保链接在AEM中标记为有效-即使AEM认为它们无效。<代码>H210<代码>H111您还可以使用<代码>D12跳过此元素的链接检查器验证。<代码>H213<代码>G214

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

票数 1
EN

Stack Overflow用户

发布于 2018-05-31 10:25:16

有多种技术用于处理特殊的url模式,请参考here。和一个非常好的链接检查器指南here

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50614747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档