Я хочу написать код на Java, который будет действовать как сервер для моего углового интерфейса (размещенного на другом сервере, npm). Мне нужно получить запрос, взять значения из отправленного JSON и вернуть JSON. Я изучил sparkJava. Для меня это выглядит идеально, потому что мне нужно обрабатывать несколько запросов, таких как (/authentication,/records,/user/Details и т. д.). Проблема, с которой я столкнулся со Spark, заключается в том, что он не может получить запрос с другого сервера. Он отлично работает, если в нем также размещен внешний интерфейс.
Java Server для обработки HTTP GET/POST и получения и ответа в JSON
comment
Достаточно ли сервлета Java для ваших требований?
- person Ravindra babu   schedule 07.10.2015
comment
Spark в том, что он не может принять запрос с другого сервера? Не уверен, что понимаю. SparkJava — это одноэлементная оболочка для JettyWebServer. Пожалуйста, расширьте свой вопрос, чтобы на него можно было ответить.
- person dom farr   schedule 08.10.2015
comment
@domfarr..Мой внешний интерфейс работает на другом сервере (npm). Я попытался отправить запрос на свой маршрут в sparkjava, но получаю ошибку перекрестного происхождения. Я добавил заголовки для ответа, чтобы разрешить кросс-происхождение и все методы HTTP, но все равно выдает ту же ошибку.
- person S. Agarwal   schedule 09.10.2015
comment
пожалуйста, добавьте ошибку к вопросу.
- person dom farr   schedule 27.10.2015
comment
Используйте веб-сервер, такой как httpd или nginx, для обслуживания внешнего интерфейса и маршрутизации запросов на серверную часть. У меня нет опыта работы с nginx, но с помощью httpd вы можете использовать mod proxy, чтобы скрыть свой сервер. Таким образом, вы можете использовать тот же домен для своих спокойных звонков.
- person Nathanial   schedule 21.03.2016
Ответы (1)
Чтобы приложение SparkJava могло получать внешние запросы, необходимо включить CORS. Добавьте следующий фрагмент перед любым маршрутом/фильтром.
options("/*",
(request, response) -> {
String accessControlRequestHeaders = request
.headers("Access-Control-Request-Headers");
if (accessControlRequestHeaders != null) {
response.header("Access-Control-Allow-Headers",
accessControlRequestHeaders);
}
String accessControlRequestMethod = request
.headers("Access-Control-Request-Method");
if (accessControlRequestMethod != null) {
response.header("Access-Control-Allow-Methods",
accessControlRequestMethod);
}
return "OK";
});
На стороне клиента (angularjs) выполните следующие действия.
$httpProvider.defaults.useXDomain = true;
person
Laercio Metzner
schedule
01.11.2015