Alfresco:外部Web服务调用gettting错误无法获得结果?

时间:2016-09-30 06:15:16

标签: javascript alfresco alfresco-share

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预检频道的访问控制允许标题)。

请帮忙。

2 个答案:

答案 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默认在请求中包含以下标头:

  • localtoken
  • x-requested-with

这些必须包含在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,则需要遵循特定于该系统的说明。