2014-12-04 1 views
1

При отправке запроса на конечную точку токена OAuth2 RFC говорит, что ответ должен быть в формате JSON. Однако при использовании Spring Security происходят странные вещи. Конечно, ошибка не в моем коде, я использовал демонстрационное приложение Sparklr2, чтобы проверить следующее. Проблема в том, что в зависимости от используемого агента пользователя результат отличается.Почему HTTP-ответ отличается для разных пользовательских агентов? (Конечная точка токена безопасности OAuth2)

получить доступ к URL-адрес http://localhost:8084/sparklr2/oauth/token

Если я использую локон, Advanced REST Client, телнет или подобное, то результат будет так же, как ожидалось:

{"error":"unauthorized","error_description":"Full authentication is required to access this resource"} 

Если я однако пользователь Firefox или Chrome, я получаю ответ в формате XML:

<oauth><error_description>Full authentication is required to access this resource</error_description><error>unauthorized</error></oauth> 

Почему происходит это странное поведение?

+0

Весна, вероятно, почитает заголовок 'Accept'. Btw Я нашел это - https://tools.ietf.org/html/draft-richer-oauth-xml-01#section-4.1. –

+0

Звучит правильно. Использование 'Accept: application/xml' дает тот же ответ, что и в Firefox/Chrome. Мне интересно, правильно ли это поведение. Но в любом случае, это не имеет большого значения, так как клиенты не будут запрашивать xml-ответ, мне просто интересно, что это было неправильно, когда вы впервые попробовали его в браузере. – Misch

+0

@PavelHoral Относительно вашего отредактированного комментария: О, я не знал об этом проекте, поэтому, в конце концов, вы не можете упрекнуть Spring в каком-либо неправильном поведении. Превратите свой комментарий в ответ, и я соглашусь с ним. – Misch

ответ

1

Весна, вероятно, чтит заголовок Accept. Браузеры обычно отправляют application/xml в качестве принятого формата. Клиенты REST обычно включают application/json. CURL ничего не посылает (если вы не определяете его), и Spring, вероятно, предпочитает JSON в таком случае.

Что касается самого формата, я нашел это - http://tools.ietf.org/html/draft-richer-oauth-xml-01#section-4.1.