Короткий ответ
Нельзя использовать относительный путь, поскольку для спецификации HTTP ( RFC7230 ) необходимо использовать абсолютный путь.
Объяснение
Если вы просто ссылаетесь на HTTP-спецификацию, легко выяснить, почему ваш запрос получил 400 Bad Request
ответ: он нарушает спецификацию. RFC7230 определяет, что в вашем сценарии цель запроса должна использовать так называемую origin-форму, которая требует абсолютного пути:
origin-form = absolute-path [ "?" query ]
Например, HTTP-запрос для http://example.org/where?q=now
будетбыть:
GET /where?q=now HTTP/1.1
Host: example.org
Если путь пуст, например http://example.org
, HTTP-запрос будет:
GET / HTTP/1.1
Host: example.org
Это связано с тем, что абсолютный путь требуется, как описано в Раздел 5.3.1 следующим образом (выделено мной):
При отправке запроса непосредственно на сервер источника, отличного от запроса OPNS CONNECT или общесерверного сервера (как подробно описано ниже),клиент ДОЛЖЕН отправить только абсолютный путь и компоненты запроса целевого URI в качестве запроса-цели.