Если это действительно один и тот же ресурс с двумя разными представлениями, HTTP предлагает вам использовать заголовок Accept , как вы предлагаете. Это, вероятно, очень надежный способ различения двух разных сценариев. Вы можете быть уверены, что пользовательские агенты (включая пауки поисковых систем) правильно отправляют заголовок Accept.
Об агентах машин, которые вы собираетесь передать XML; они под вашим контролем? В этом случае вы можете быть вдвойне уверены, что Accept будет работать. Если они не устанавливают этот заголовок должным образом, вы можете указать XML по умолчанию. ПАгенты ДОЛЖНЫ устанавливать заголовок правильно.
Я бы попробовал использовать для этого хедер Accept, потому что именно для этого и существует заголовок Accept.
Проблема с наличием двух разных URL-адресов заключается в том, что автоматически не очевидно, что эти два представляют один и тот же базовый ресурс. Это может быть плохо, если пользователь находит URL в одной программе, которая отображает HTML, и вставляет ее в другую, для которой требуется XML. На этом этапе умный пользователь может, вероятно, изменить URL-адрес соответствующим образом, но это всего лишь источник ошибки, который вам не нужен.