Glassfish只允许GET和POST方法

时间:2017-02-01 14:04:29

标签: java methods glassfish

部署耳后我需要在glassfish 4.1.1中隐藏我们的应用程序方法,所以在web.xml中我添加了以下内容:

<security-constraint>
        <display-name>Constraint1</display-name>
        <web-resource-collection>
            <web-resource-name>https</web-resource-name>
            <description/>
                <url-pattern>/*</url-pattern>
                         <http-method>GET</http-method>
                         <http-method>POST</http-method>
            </web-resource-collection>
        <user-data-constraint>
            <description/>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

所以当我用curl检查时:

curl -i -X OPTIONS --insecure https://address

我得到以下内容:

Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS

1 个答案:

答案 0 :(得分:1)

您所做的并不会禁用未列出的方法(例如PUT,DELETE),而是强制使用这些方法进行身份验证。如果您不想支持特定的HTTP方法,则可以构建一个不支持该特定方法的Web应用程序。

例如,如果您部署的应用程序将某个REST端点暴露给GET和POST,而不是PUT,那么很可能如果有人试图使用PUT访问它,那么他们就会得到某种不支持的方法错误。您还可以更进一步,实际为PUT定义该端点,但随后抛出异常,返回自定义错误消息等。

阅读here了解详情。