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