繁体   English   中英

如何将HTTP标头发送到PHP中包含的页面?

[英]How to send HTTP Headers to an included page in php?

我需要在php中包含一些URL ..我使用以下代码:

<? include 'http://my_server.com/some_page.jsp?test=true'; ?>

问题是,页面some_page.jsp根据请求标头user-agent以不同方式执行上述include语句...

那么我如何强制浏览器将请求标题也发送到包含的页面?

谢谢。

这是一个糟糕的模式,如果它在你自己的服务器上,你应该只通过相对路径(为什么调用HTTP)包含它,如果它不是,你基本上把钥匙交给你的网站到另一个域。

要使用其他用户代理请求其他文档,请尝试使用cURL库。

不要继续,仅供参考...

如果你必须运行生成的PHP代码(我强烈建议你不要,最重要的是为什么? )然后你可以eval()响应。

更新

你需要allow_url_include来包含一个URL,默认情况下它是关闭的。 如果启用它,则可以使用user_agent选项设置用户代理。

如果你这样做是为了加入一个phpjsp站点,你应该尝试坚持在它们之间发送数据 ,而不是通过HTTP运行的另一个代码。

该声明:

<? include 'http://my_server.com/some_page.jsp?test=true'; ?>

不会像你期望的那样行事。

退房:HttpClient

http://scripts.incutio.com/httpclient/

有用户手册和示例

您无法设置发送的所有HTTP标头,但您可以设置发送的用户代理字符串,如下所示:

<? 

ini_set("user_agent", $_SERVER["HTTP_USER_AGENT"]);
include 'http://my_server.com/some_page.jsp?test=true'; 

?>

默认情况下,user_agent值为NULL,这就是您当前未看到任何内容发送的原因。

这应该够了吧。 请注意,如果.jsp文件返回html内容而不是php,则应使用readfile ,而不是include

我强烈建议您不要在现场环境中使用您的代码。 而是使用Client-URL

例如,您可以这样做:

$ch = curl_init();
// the website
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/path/to/webpage');
// this line sets up curl so the website contents will be returned
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// the user agent, for example firefox
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
$html = curl_exec($ch);

如果你之后绝对需要执行代码,那么你可以执行大量的检查和eval()它,但只有你必须这样做。 一种更好的方法是某种字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM