Alfresco社区版-5.1.x。在调用外部Web服务时,我收到错误无法获得结果
代码:
function updateList(){
Alfresco.util.Ajax.request({
url: "http://test.com/webservice/mgmobile/mgserver.php?wsfunction=course_get_all_courses&wstoken=7f5e0f05f7c54ece7a23f02fe3718464",
method: Alfresco.util.Ajax.GET,
headers: ('Access-Control-Allow-Origin: *'),
headers: ('Access-Control-Request-Headers: *'),
headers: ('Access-Control-Allow-Methods: *'),
requestContentType: Alfresco.util.Ajax.JSON,
successCallback:{
fn: function(res){
appendOptiOnvalues(res)
},
},
failureCallback:{
fn: function(res){
alert("Error");
},
}
});
}
错误:
阻止跨源请求:同源策略禁止在http://test.com/webservice/mgmobile/mgserver.php?wsfunction=course_get_all_courses&wstoken=7f5e0f05f7c54ece7a23f02fe3718464读取远程资源。 (原因:在CORS标题中缺少令牌'内容类型'来自CORS预检频道的访问控制允许标题)。
请帮忙。
答案 0 :(得分:1)
看起来正在调用非Alfresco服务器,因此在Alfresco上配置CORS无济于事。而是检查您正在呼叫的服务器上的CORS配置,并确保它正在设置" Access-Control-Allow-Headers"允许"内容类型"要指定的标头。这可能是由您正在使用的Alfresco AJAX util库设置的。
我不知道您正在呼叫哪个服务器,因此我无法提供特定于该服务器的CORS帮助,但here是关于为各种类型的服务器启用CORS的一些信息。 / p>
答案 1 :(得分:0)
我们今天在尝试从Alfresco共享UI调用Alfresco Web脚本时遇到了这个问题,发现问题出在Alfresco Platform CORS配置中。我们的Alfresco.util.Ajax.request
默认在请求中包含以下标头:
这些必须包含在cors.allowed.headers
的{{1}}属性中,否则ACS将使用HTTP 403拒绝该请求。
示例
alfresco-global.properties
注释
请记住,cors.enabled=true
cors.allowed.origins=http://localhost:8180
cors.allowed.methods=GET,HEAD,POST,PUT,DELETE,OPTIONS
cors.allowed.headers=origin, authorization, x-file-size, x-file-name, content-type, accept, x-file-type, range, localtoken, x-requested-with
cors.support.credentials=true
cors.exposed.headers=Accept-Ranges, Content-Encoding, Content-Length, Content-Range, content-type, localtoken
是在使用Alfresco提供的ACS多合一平台的docker容器时进行配置的地方。如果要在Tomcat或其他应用程序服务器中部署自己的WAR,则需要遵循特定于该系统的说明。