Alfresco: ошибка получения при вызове внешнего веб-сервиса не может получить результат?

#javascript #alfresco #alfresco-share

#javascript #alfresco #alfresco-поделиться

Вопрос:

Alfresco community edition-5.1.x. при вызове внешнего веб-сервиса я получаю ошибку, не могу получить результат

Код:

 function updateList(){
    Alfresco.util.Ajax.request({

                url: "http://test.com/webservice/mgmobile/mgserver.php?wsfunction=course_get_all_coursesamp;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_coursesamp;wstoken=7f5e0f05f7c54ece7a23f02fe3718464. (Причина: отсутствует токен ‘content-type’ в заголовке CORS ‘Access-Control-Allow-Headers’ из предполетного канала CORS).

Пожалуйста, помогите в этом.

Комментарии:

1. slideshare.net/jottley/cors-enable-alfresco-for-cors . Не могли бы вы, пожалуйста, быстро взглянуть на это?

Ответ №1:

Похоже, что вызов выполняется на сервер, не относящийся к Alfresco, поэтому настройка CORS на Alfresco не поможет. Вместо этого проверьте конфигурацию CORS на вызываемом сервере и убедитесь, что он устанавливает «Access-Control-Allow-Headers», чтобы разрешить указание заголовка «content-type». Вероятно, это устанавливается используемой вами библиотекой утилит Alfresco AJAX.

Я не знаю, какой сервер вы вызываете, поэтому я не могу предоставить справку CORS, специфичную для этого сервера, но вот некоторая информация о включении CORS для различных типов серверов.

Ответ №2:

Мы столкнулись с этим сегодня при попытке вызвать веб-скрипт Alfresco из пользовательского интерфейса Alfresco Share и обнаружили, что проблема была в конфигурации платформы Alfresco CORS. По Alfresco.util.Ajax.request умолчанию в запрос включены следующие заголовки:

  • localtoken
  • x-запрошенный-с

Они должны были быть включены в наше cors.allowed.headers свойство, alfresco-global.properties иначе ACS отклонит запрос с HTTP 403.

Пример

 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-global.properties , где вы настраиваете это при использовании контейнера ACS all-in-one-platform-docker, предоставляемого Alfresco. При развертывании собственного WAR на Tomcat или другом сервере приложений вам необходимо следовать инструкциям, специфичным для этой системы.