我有一个使用TIdHTTPServer
组件的Indy HTTP服务器。我希望使用URL Rewrite模块像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
时,它会像https://www.mydomain2.com/www.domain1.com
一样附加到当前URL。
我的理解是,由于安全问题,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');
我找不到解决方法。
答案 0 :(得分:4)
从服务器端执行此操作的唯一方法是指示客户端请求新的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
而不是DISPLAY https://www.mydomain1.com
,则只能通过操纵浏览器地址栏的客户端脚本来完成。