На сервере нужно различить запросы посылаемые с ajax и переходом по ссылке, как можно их различить?
В req.headers нашел только, что при переходе по ссылке браузер добавляет заголовок upgrade-insecure-requests:1, а при ajax запросе он отсутствует. Все ли браузеры добавляют его или только хром?
это для XHR только соответствено, что по сути уже устаревшая технология. Аякс может и фетчем прилететь, тогда никак, надо руками ставить дополнительный флаг.