我发现一个网站,他们将外部 URL 重写为内部 URL,通过这个技巧,他们能够避免 iframe 中的同源策略。 以下是他们如何做到这一点的一些示例:
External URL: http://stackoverflow.com
Internal URL: https://stackoverflow-com-m.surfly.com/HT/mj5qTc22vRI6M9mfrKULbCp//////////
External URL: http://www.facebook.com
Internal URL: https://facebook-com-m.surfly.com/www/ST/mj5qTc22vRI6M9mfrKULbCp//////////
External URL: http://www.bbc.co.uk
Internal URL: https://co-uk-m.surfly.com/bbc/www/HT/mj5qTc22vRI6M9mfrKULbCp//////////
External URL: http://www.google.de
Internal URL: https://google-de-m.surfly.com/www/ST/mj5qTc22vRI6M9mfrKULbCp//////////?gfe_rd=ctrl&ei=a5XuUueLN8yG8Qe8kIBI&gws_rd=cr
mj5qTc22vRI6M9mfrKULbCp
是一个简单的 session 变量部分,但是 HT
和ST
部分会自动更改,我不知道为什么也不知道它意味着什么。
如何重写这样的 URL 并在我自己的域上加载外部网站?
最佳答案
您必须下载并处理页面中的链接,然后在 iframe 中显示重写的版本。
因此,例如,您必须替换:
- 所有完整网址(
http://...
或https://...
) - 所有仅协议(protocol)网址 (
//...
) - 所有相对网址(
/foo/bar
或foo/bar
)
要真正做到正确,您还必须对图像和脚本执行此操作,包括替换脚本中的所有 URL。这是一个重大挑战。
此外,这很可能违反某些司法管辖区的法律或相关网站的使用政策。您应该考虑与律师交谈。
关于node.js - 将外部 URL 重写为内部 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21514898/