部署耳后我需要在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
答案 0 :(得分:1)
您所做的并不会禁用未列出的方法(例如PUT,DELETE),而是强制使用这些方法进行身份验证。如果您不想支持特定的HTTP方法,则可以构建一个不支持该特定方法的Web应用程序。
例如,如果您部署的应用程序将某个REST端点暴露给GET和POST,而不是PUT,那么很可能如果有人试图使用PUT访问它,那么他们就会得到某种不支持的方法错误。您还可以更进一步,实际为PUT定义该端点,但随后抛出异常,返回自定义错误消息等。
阅读here了解详情。