У меня есть HTTP-сервер Indy, использующий компонент TIdHTTPServer. Я хочу, чтобы URL-адрес браузера был переписан, как это делают Apache и IIS, используя модули перезаписи URL-адресов.
Например: если кто-то переходит на https://www.mydomain2.com, я хочу, чтобы URL-адрес в браузере отображал https://www.mydomain1.com.
Я почти уверен, что использование Javascript history.pushState - не ответ.
Я пробовал использовать Javascript history.pushState('data to be passed', 'Title of the page', '/www.mydomain1.com'); в качестве альтернативы. Однако, когда я перехожу к https://www.mydomain2.com, он добавляется к текущему URL-адресу, например, https://www.mydomain2.com/www.domain1.com.
Насколько я понимаю, history.pushState не допускает полную замену URL из-за проблем с безопасностью.
Заголовки моего сервера (а я просто снимаю в темноте):
aResponseInfo.CustomHeaders.AddValue('Access-Control-Allow-Origin','*');
aResponseInfo.CustomHeaders.AddValue('Access-Control-Allow-Methods','*');
aResponseInfo.CustomHeaders.AddValue('Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization');
aResponseInfo.CustomHeaders.AddValue('Cache-Control', 'no-cache');
У меня проблемы с поиском решения.





Единственный способ сделать это со стороны сервер - указать клиенту запросить новый URL. Для этой цели вы можете использовать метод TIdHTTPResponseInfo.Redirect(), например:
if ARequestInfo.Host = 'www.mydomain2.com' then
AResponseInfo.Redirect('https://www.mydomain1.com');
Но обратите внимание, что клиент больше не будет НА https://www.mydomain2.com, вместо этого он перейдет к https://www.mydomain1.com.
Если вы хотите, чтобы клиент оставался на https://www.mydomain2.com, но отображал https://www.mydomain1.com, это можно сделать только с помощью сценария на стороне клиента, который манипулирует адресной строкой браузера.
См. Как изменить URL без перезагрузки страницы?
Реми, пока я пытаюсь найти решение, кажется, есть веская причина для желания выполнить перезапись URL. есть ли шанс, что это может быть доступно в будущей сборке Indy?
См. Как работает перезапись URL?. «Перенаправление» уже реализовано в Indy. «Перезапись» - нет, но ничто не мешает вам реализовать «перезапись» в ваших обработчиках OnCommand... сегодня, это просто вопрос того, как вы решите интерпретировать запрошенные URL-адреса. И нет, нет никаких планов, чтобы Indy реализовал для вас "Rewrite" в ближайшее время.
Насколько я понимаю, из соображений безопасности нет способа выполнять сценарии на стороне клиента? Вы бы не знали, куда мне указать, чтобы узнать, как это можно сделать?