【发布时间】:2017-03-19 17:40:04
【问题描述】:
我正在使用location.href 来获取浏览器地址栏中存在的完整 URL。
为了提供更多详细信息,请务必注意我们的服务有一个 js 文件,该文件将包含在我们的客户站点中。所以这个 JS 文件会生成申请人的完整 URL。
我认为这个 URL 不知何故是以前重定向到真实域的 URL,但我应该如何防止这种行为呢?
将为 iframe 的 src 属性生成链接的 JS 代码行是:
'http://sd.domain.ir/index.php?r=' + Math.floor(Math.random() * (100000000 - 0 + 1)) + 0 + '&ref=' + ((window.btoa) ? btoa(location.href) : 'ie') + '&responsive=' + ((document.querySelector('meta[name="viewport"][content*="width=device-width"]')) ? 'yes' : 'no') + '¶ms='
申请人UA示例:Mozilla\/5.0 (Linux; U; Android 4.3; en-us; HUAWEI G620-L72 Build\/HuaweiG620-L72) AppleWebKit\/534.24 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.24 T5\/2.0 bdbrowser\/6.1.0.4
Mozilla\/5.0 (Linux; U; Android 4.4.3; en-ae; HTC_One Build\/KTU84L) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30
Mozilla\/5.0 (Linux; U; Android 4.3; en-us; GT-I9300 Build\/JSS15J) AppleWebKit\/534.30 (KHTML, like Gecko) Version\/4.0 Mobile Safari\/534.30
...
location.href 有时会生成奇怪的 url,我不知道是什么原因。例如:
【问题讨论】:
-
我无法在 Chrome 中复制该问题 - window.location.href 应始终返回当前页面 url 唯一我认为它可能不是使用 HTML5 更改的实例历史 API。您是否使用了特定的浏览器或进程来产生此问题?
-
@Brian 感谢您的回答,我会在日志中添加额外选项以查看客户端用户代理,我会尽快通知您
-
@Brian 添加到问题中的一些客户端 UA 示例
-
我仍然无法使用 UA 欺骗和 chrome“仿真”重现该问题。我以为我之前提到过,但你确定它是记录 location.href 而不是 document.referrer 吗?我唯一的其他想法是主页上可能没有出现问题 - 可能将 GET 请求记录到内联脚本/div 中以便可以通过您的日志记录脚本传回可能会有所帮助,以便我们可以手动映射请求一个 url 并尝试缩小我们如何重现问题
-
@Brian 是的,我确定要使用 location.href,不幸的是我不明白你在说什么。 :(