php – 代理网站中的相对网址不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 代理网站中的相对网址不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1433字,纯文字阅读大概需要3分钟。
内容图文
![php – 代理网站中的相对网址不起作用](/upload/InfoBanner/zyjiaocheng/756/169373a8a19d4f08a651be29b68c30e7.jpg)
在PHP中,我编写了一个接受URL,用户代理和其他设置的代理函数.然后该函数对网站发出curl请求,并将带有正确html内容类型标题的输出打印到iframe中(这是必要的,因为我需要更改一些标题).
代理输出通常有很多具有相对URL的资产,实际上是我站点的主机名,而不是代理站点:
例:
[http://MYSITE.com/proxy?url=http://somesite.com]将返回[http://somesite.com]的html
在响应html中,有这样的东西:
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.png">
问题:
它不是在http://somesite.com/assets/ico/apple-touch-icon-144-precomposed.png上寻找该资产的资产,而是在http://MYSITE.com/assets/上尝试找到它. ico / apple-touch-icon-144-precomposed.png哪个错了.
问题:
我需要做些什么才能通过代理正确加载他们的相对路径资产?
解决方法:
<base> tag怎么样?您可以将其放在头部,它将通知浏览器使用什么作为页面上所有相对URL的基本路径:
<head>
<base href="http://somesite.com/">
</head>
您可以将它添加到您使用DOMDocument服务的每个页面(注意这是针对PHP5.4的,因为数组解除引用,但这对于早期版本很容易修复):
if($contentType == 'text/html') {
$doc = DOMDocument::loadHTML($html);
$head = $doc->getElementsByTagName('head')[0];
if(count($head->getElementsByTagName('base')) == 0) {
$base = DOMDocument::createElement('base');
$base->setAttribute('href', $urlOfPageDir);
}
$head->appendChild($base);
echo $doc->saveHTML();
}
请注意,$urlOfPageDir必须是页面所在目录的绝对URL.有关基本标记的更多信息,请参阅此SO问题:Is it recommended to use the
内容总结
以上是互联网集市为您收集整理的php – 代理网站中的相对网址不起作用全部内容,希望文章能够帮你解决php – 代理网站中的相对网址不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。