【问题标题】:Java Server to handle HTTP GET/POST and receive & respond in JSONJava 服务器处理 HTTP GET/POST 并以 JSON 格式接收和响应
【发布时间】:2016-03-22 02:44:33
【问题描述】:

我想用 Java 编写一个代码,它将充当我的 Angular 前端(托管在另一台服务器 npm 上)的服务器。我需要接收请求,从发送的 JSON 中获取值并返回 JSON。 我调查了sparkJava。它对我来说看起来很完美,因为我需要处理多个请求,例如(/authentication、/records、/user/Details 等)。 我对 Spark 的问题是它无法接收来自另一台服务器的请求。如果前端也托管在其中,它可以正常工作。

【问题讨论】:

  • java servlet 是否足以满足您的要求?
  • Spark 是它无法接收来自另一台服务器的请求吗?不确定我是否理解。 SparkJava 是 JettyWebServer 的单例包装器。请扩展您的问题以便回答。
  • @domfarr..我的前端正在另一台服务器 (npm) 上运行。我尝试在 sparkjava 中向我的路由发送请求,但出现跨源错误。我已经为响应添加了标头以允许跨源和所有 HTTP 方法,但它仍然给出了相同的错误。
  • 请将错误添加到问题中。
  • 使用像 httpd 或 nginx 这样的 Web 服务器来为您的前端提供服务并将请求路由到您的后端。我没有使用 nginx 的经验,但是使用 httpd 你可以使用 mod proxy 来隐藏你的后端。这样您就可以使用同一个域进行安静的通话。

标签: java http post get spark-java


【解决方案1】:

为了使 SparkJava 应用程序能够接收外部请求,您必须启用 CORS。在任何路由/过滤器之前添加以下 sn-p。

        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;

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多