CQ:为什么 jquery 添加 /ajax 到我的网络服务 url 的开头?
CQ: Why does jquery add /ajax to the start of my web service url?
我写了一个小 servlet,它以 RSS 提要的形式输出数据。它在我的网络服务器 /services/rss.servlet 上 运行 并且正在很好地返回数据。
在我的网页中,我正尝试从 rss servlet 加载数据,如下所示:
$(document).ready(function() {
$.get("/services/rss.servlet")
.done(function(data) {
console.log("Success: " + data);
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});
});
大多数时候,这工作正常,我得到了数据。但是时不时地,请求失败,我在我的网络调试页面中看到以下请求:
Request GET /ajax/services/rss.servlet HTTP/1.1
为什么我会在 URL 前面看到 /ajax? JQuery 中似乎完全没有记录。特别是,我在使用 quirks 模式的 IE9 中一直注意到这种行为,但在使用标准浏览器模式的 IE9 中却没有。
我发现这个问题是 Adobe CQ/WEM 的 "feature" 独有的。
在 "normal" 布局中,CQ 将公开公开以下子目录:
www.example.com/apps
www.example.com/libs
www.example.com/etc
但是,CQ 包含允许将其托管在比文档根目录更深的相对 URL 中的代码,以防您的目录结构恰好是...
www.example.com/subdirectory/cqRoot/apps
www.example.com/subdirectory/cqRoot/etc
www.example.com/subdirectory/cqRoot/libs
支持此功能的代码都是客户端 javascript,它会扫描 <head>
这些目录并找出 CQ "ought to be".
的位置
在我们的例子中,<head>
中的第一项是 <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
,CQ 认为这意味着应用程序存储在 /ajax.
下
从 Felix 控制台的 CQ 5.6 开始,有一个配置可以阻止此功能。 http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.685.html/forum__omci-we_are_on_cq54.html
您也可以在 <head>
中强制禁用它,这样它就不会自动检测到。
<script>
window.CQURLInfo = window.CQURLInfo || {};
CQURLInfo.contextPath = "";
</script>
我写了一个小 servlet,它以 RSS 提要的形式输出数据。它在我的网络服务器 /services/rss.servlet 上 运行 并且正在很好地返回数据。
在我的网页中,我正尝试从 rss servlet 加载数据,如下所示:
$(document).ready(function() {
$.get("/services/rss.servlet")
.done(function(data) {
console.log("Success: " + data);
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});
});
大多数时候,这工作正常,我得到了数据。但是时不时地,请求失败,我在我的网络调试页面中看到以下请求:
Request GET /ajax/services/rss.servlet HTTP/1.1
为什么我会在 URL 前面看到 /ajax? JQuery 中似乎完全没有记录。特别是,我在使用 quirks 模式的 IE9 中一直注意到这种行为,但在使用标准浏览器模式的 IE9 中却没有。
我发现这个问题是 Adobe CQ/WEM 的 "feature" 独有的。
在 "normal" 布局中,CQ 将公开公开以下子目录:
www.example.com/apps
www.example.com/libs
www.example.com/etc
但是,CQ 包含允许将其托管在比文档根目录更深的相对 URL 中的代码,以防您的目录结构恰好是...
www.example.com/subdirectory/cqRoot/apps
www.example.com/subdirectory/cqRoot/etc
www.example.com/subdirectory/cqRoot/libs
支持此功能的代码都是客户端 javascript,它会扫描 <head>
这些目录并找出 CQ "ought to be".
在我们的例子中,<head>
中的第一项是 <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
,CQ 认为这意味着应用程序存储在 /ajax.
从 Felix 控制台的 CQ 5.6 开始,有一个配置可以阻止此功能。 http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.685.html/forum__omci-we_are_on_cq54.html
您也可以在 <head>
中强制禁用它,这样它就不会自动检测到。
<script>
window.CQURLInfo = window.CQURLInfo || {};
CQURLInfo.contextPath = "";
</script>