2017-02-01 15 views
0

Когда я попытался отправить запрос GET на URL-адрес Activiti REST, используя POSTMAN и настроя параметр авторизации (kermit: kermit), он работает как шарм.Activiti REST возвращает 401 после запроса GET

Но когда я попытался сделать то же самое, только с угловыми сервис $ HTTP, он возвращает следующую ошибку:

XMLHttpRequest cannot load http://localhost:8080/activiti-rest/service/repository/deployments . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:8081 ' is therefore not allowed access. The response had HTTP status code 401.

Вот мой контроллер:

(function() { 
'use strict'; 

angular 
    .module('doktorat-app-test') 
    .controller('TestController', TestController); 

TestController.$inject = ['$http', '$base64']; 
function TestController($http, $base64) { 
    var tcr = this; 
    $http.defaults.headers.common['Authorization'] = 'Basic ' + $base64.encode('kermit:kermit'); 


    tcr.text = 'ssdsds'; 


    $http.get('http://localhost:8080/activiti-rest/service/repository/deployments') 
    .then(function(response){ 
     tcr.text = response.data; 
    }); 
} 

})(); 

Кто-нибудь сталкивался с аналогичная ошибка? Прошло более двух дней, пытаясь решить эту проблему, но без каких-либо успехов.

P.S. Я использую NodeJS HTTP-сервер, чтобы запустить свое Угловое приложение, которое работает на порту 8081.

+0

https://stackoverflow.com/search?q=No+Access-Control-Allow-Origin+header+is + present + on + + запрошенный + ресурс – sideshowbarker

ответ

0

Так как вы пытаетесь получить доступ к API отдыха, который находится на http://localhost:8081/ От http://localhost:8080/, браузер будет проверить, если ваш сервер реализовать CORS с помощью предполетного запроса. Вы можете получить подробности о CORS на ниже URL:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

Нормально приложение, размещенное на одном сервере не будет разрешен доступ к ресурсам, размещенным в другом ограничении sever.This осуществляется всеми большинством всех браузер теперь дни.

Для того, чтобы это сработало, сервер api вашего отдыха должен сказать, что некоторые другие серверы также будут позволены. Для этого вам нужно внедрить фильтр CORS на вашем сервере api для отдыха.

Поскольку вы не уточнил, какие LANGAUGE вы используете в REST, я предоставление источника CORS библиотеки открытого фильтра для JAVA:

http://software.dzhuvinov.com/cors-filter.html

, который решает проблему.

+0

Спасибо за ваш комментарий, он дал мне представление о том, как решить мою проблему. Так как activiti REST работает на localhost: 8080 Tomcat и его в папке webapps, я сохранил свое угловое приложение также в папке webapps и решил проблему. Это не изящное решение, но в моем случае мне просто нужно работать. Приветствия. – Martel

0

Чтобы разрешить CORS для конкретного домена, вы можете использовать промежуточное программное обеспечение, как показано ниже:

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "http://localhost:8081"); 
    res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); 
    res.header("Access-Control-Allow-Credentials", "true"); 
    res.header("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, X-Requested-With"); 
    next(); 
});