首页 > 解决方案 > 如何在 Spark 框架中使用 OPTIONS HTTP 方法?

问题描述

我很难理解如何使用 Spark 框架返回 HTML 页面或嵌入式 jetty-9.4.4.v20170414 服务器上允许的所有方法?

Java Spark 代码:

options("/panel/data/options", (request, response) -> request
                .headers("Access-Control-Request-Method"));

AngularJS 代码:

$scope.options = function(){
        $http({
            method: 'OPTIONS',
            url: 'http://localhost:4567/panel/data/options',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).then(function succesCallback(response){
            alert(response.data)
        });
    };

这就是我到目前为止所拥有的。

标签: javaangularjsrestful-architecturespark-javahttp-1.1

解决方案


首先,您的 Spark java 方法正在修改请求标头,它应该只修改响应标头,因为您的客户端不会取回修改后的请求。

options("/panel/data/options", (request, response) -> response
            .headers("Access-Control-Request-Method"));

然后在您的角度方法中,由于后端正在更改响应的标题,那么您应该阅读这些标题,而不是数据:

$scope.options = function(){
    $http({
        method: 'OPTIONS',
        url: 'http://localhost:4567/panel/data/options',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).then(function succesCallback(response){
        alert(response.headers)
    });
};

推荐阅读