这是一篇旧帖子,但它在 Google 中排名很高,所以我将添加我的解决方案。
如果您可以控制 ajax 响应,则可以将标头添加到带有最终 URL 的响应中。
在 PHP 中,这将类似于:
header('X-final-url: /some/other/location')
.
然后,在 jquery 中,您可以使用以下命令访问此值:
var finalUrl = jqXHR.getResponseHeader('X-final-url');
我在Symfony中添加了带有内核侦听器的标头:
服务
app.kernel.response_metadata_populator:
class: AppBundle\Listeners\ResponseMetadataPopulator
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
监听类
class ResponseMetadataPopulator
{
/**
* @param FilterResponseEvent $event
*/
public function onKernelResponse(FilterResponseEvent $event)
{
$response = $event->getResponse();
$response->headers->set('X-FINAL-URL', $event->getRequest()->getRequestUri());
}
}