[英]How to send data in http headers in php for calling another server Api
[英]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
选项设置用户代理。
如果你这样做是为了加入一个php
和jsp
站点,你应该尝试坚持只在它们之间发送数据 ,而不是通过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.