gpt4 book ai didi

delphi - 如何用 Indy 的 TIdHTTPServer 组件替换浏览器 URL?

转载 作者:行者123 更新时间:2023-12-03 18:25:41 29 4
gpt4 key购买 nike

我有一个使用 TIdHTTPServer 的 Indy HTTP 服务器零件。我希望像 Apache 和 IIS 一样使用 URL 重写模块重写浏览器 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 替换。

我的服务器 header 是(我只是在黑暗中拍摄):

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 ,这只能通过操纵浏览器地址栏的客户端脚本来完成。

关于delphi - 如何用 Indy 的 TIdHTTPServer 组件替换浏览器 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53861620/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com