#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 или другом сервере приложений вам необходимо следовать инструкциям, специфичным для этой системы.