DXA 1.2 - запросы зонда Http не выполняются при отсутствии параметра Accept или Content-Type в заголовке


6

После недавнего обновления до DXA 1.2, заметили, что новый PageController представил handleGetPageFormatted(), который предположительно будет использоваться для ответа отформатированным (в основном, отличным от текста/html) для запрошенного ресурса.

Это работает отлично почти в большинстве случаев, за исключением случаев, когда в запросе отсутствует параметр заголовка Accept. DefaultDataFormattergetHtmlAcceptScore() содержит исключение нулевого указателя, в отсутствие параметра заголовка Accept.

В нашем каталоге мы используем Varnish Cache, который настроен как часть нашей настройки балансировки нагрузки. Этот лак для лака проверяет окна приложений на наличие. Если серверы не могут ответить на зонд, они обозначены как больные и недоступные. После исследования выяснилось, что по умолчанию он не отправляет какой-либо заголовок. Настройки ниже для зонда:

backend www1 { 
    .host = "xx.xx.xx.xx"; 
    .port = "80"; 
    .probe = { 
    .url = "/"; 
    .interval = 5s; 
    .timeout = 3s; 
    .window = 5; 
    .threshold = 3; 
    } 
} 

Имея потребляет набор атрибутов на handleGetPageFormatted() «s @RequestMapping, могли бы решить проблему. Поскольку это означало бы только отображение запроса, который принимает определенный тип Media Type.

Попробуй это и обновите этот случай.

С кем-либо сталкивался с подобной проблемой.

Редактировать: Другим способом адреса может быть отправка заголовка Accept как часть самого запроса зонда, что не было требованием в более ранней версии DXA. Нижеприведенный пример:

.request = 
    "GET /probe.cgi HTTP/1.1" 
    "Host: 127.0.0.2" 
    "Connection: close" 
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" 
    "Accept-Encoding: foo/bar" ;  
+1

Хорошо проанализированный вопрос! Пожалуйста, сообщите о таких проблемах в GitHub: http://www.github.com/sdl/dxa-web-application-java/issues, если возможно включить заголовок Accept в запрос зонда, я бы рекомендовал это в качестве рабочего вместо того, чтобы самостоятельно модифицировать исходный код DXA. 04 янв. 162016-01-04 18:52:16

  0

сообщил об этом как [проблема] (https://github.com/sdl/dxa-web-application-java/issues/8) 05 янв. 162016-01-05 09:30:35

4

Исправлена ​​ошибка с указанным выше нулевым указателем путем выполнения нулевой проверки заголовка Accept. Изменения должны быть сделаны в DefaultDataFormatter's getHtmlAcceptScore() и BaseFormatter's getValidTypes(List<String> allowedTypes) операций.

Теперь кэш лаков способен успешно исследовать приложение. Теперь нам не нужно менять @RequestMapping или в кеш-гриф.