在您说不可能之前,请参阅here。我只需要停止重定向自动重定向网址,并获取它尝试重定向到的页面。我更喜欢“位置”标题,但如果有另一种方式,那就太棒了。
似乎XMLhttpRequest似乎不起作用,因为发送请求,url必须在同一个域上,这不是这种情况。请帮忙!!!
答案 0 :(得分:2)
看起来hurl.it
不使用XMLHttpRequest
,而是他们自己发出请求(服务器端),让他们选择是否遵循重定向(例如,.NET的{{1} 1}} property)。
在客户端JavaScript中,您必须使用HttpWebRequest.AllowAutoRedirect
,遗憾的是,没有API可以禁用重定向。
然而有一个名为Fetch的新网络API,自版本14以来一直受Chrome支持,自版本14以来支持Edge,自版本39以来支持Firefox。
使用XMLHttpRequest
,您可以选择不遵循重定向,如下所示:
Fetch
这可以更简洁:
var url = "http://assetgame.roblox.com/asset/?id=1818";
var fetchOptions = {
redirect: 'manual' // use "manual" to disable the automatic following of redirections
};
var request = new Request( url, fetchOptions );
window
.fetch( request )
.then( function( response ) {
alert( response.headers.get('Location') );
} );
根据文档,遗憾的是,fetch( "http://assetgame.roblox.com/asset/?id=1818", { redirect: 'manual' } )
.then( res => alert( res.headers.get('Location') ) );
标题不会向客户公开:
http://xcatliu.com/fetch/#atomic-http-redirect-handling
在整个平台中,重定向(其状态或内部响应(如果有)状态为重定向状态的响应)不会暴露给API。公开重定向可能会泄漏通过跨站点脚本无法获得的信息攻击。
因此,只有Location
API添加的值才是更简洁的请求/响应API,并且能够检测重定向并选择不关注它们(与Fetch
不同这将始终遵循重定向),但不幸的是你无法获得原始标题。
请注意,WebSockets不会公开真正的TCP套接字连接,因此您无法使用WebSockets连接到任意网络服务。