2017-02-01 2 views
0

После развертывания уха мне нужно, чтобы скрыть методы нашего приложения в GlassFish 4.1.1 так в web.xml я добавил следующее:Glassfish позволяет получить только и POST метода

<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 -i -X OPTIONS --insecure https://address 

я получаю следующее:

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

ответ

1

То, что вы сделали не отключает методы не Liste d (например, PUT, DELETE), но вместо этого следует использовать аутентификацию при использовании этих методов. Если вы не хотите поддерживать определенный HTTP-метод, вы можете создать webapp, который просто не поддерживает этот конкретный метод.

Например, если ваше развернутое приложение обнаружило определенную конечную точку REST для GET и POST, но не PUT, то, скорее всего, если кто-то попытается получить к ней доступ с помощью PUT, они уже получат какой-то метод, не поддерживающий ошибку. Вы также можете сделать это еще дальше и на самом деле определить эту конечную точку для PUT, но затем выбросить исключение, вернуть собственное сообщение об ошибке и т. Д.

Прочтите here для получения дополнительной информации.

+0

@Time Biegeleisen, Спасибо за ответ, так что теперь у меня нет других решений, кроме сборки webapp? –

+0

@BOUKANDOURAMhamed Я говорю, что если вы хотите, чтобы определенные методы (например, PUT) были заблокированы в развернутом приложении, обработайте его на прикладном уровне. –

+0

Хорошо, пойдите, спасибо большое @TimeBiegeleisen –

Смежные вопросы