Php 为什么图像请求生成302?
我正在使用PHP生成以下图像元素:Php 为什么图像请求生成302?,php,redirect,Php,Redirect,我正在使用PHP生成以下图像元素: <img id="uploaded-image" src="http://localhost/gonzo/plans/image/123/tablemap.png" /> 请求生成一个302,其中包含错误的位置和内容类型标题: 浏览器不显示此图像标记在页面上的图像。但是,当直接在地址栏中键入图像URL时,将显示图像 为什么我的服务器在将图像加载到标记时会生成302,而在将图像URL直接键入地址栏时会生成200?我正在Windows上运行Apac
<img id="uploaded-image" src="http://localhost/gonzo/plans/image/123/tablemap.png" />
请求生成一个302,其中包含错误的位置和内容类型标题:
浏览器不显示此图像标记在页面上的图像。但是,当直接在地址栏中键入图像URL时,将显示图像
为什么我的服务器在将图像加载到标记时会生成302,而在将图像URL直接键入地址栏时会生成200?我正在Windows上运行Apache。所描述的行为根本不可能发生,因为服务器不知道URL是如何嵌入到网页中的 提供PHP脚本实际调用的更多详细信息:将环境详细信息-$\u GET、$\u POST和$\u SERVER打印到日志文件中 将每个执行的语句记录并跟踪到日志文件可能会有所帮助
检查您的PHP源代码。结果表明,这是由一个奇怪的并发问题引起的。当浏览器请求图像时,我的框架仍在处理第一个请求(生成包含img元素的页面) 换句话说,当浏览器请求图像时,它仍在接收从第一个请求到脚本的输出。这让事情变得古怪 输出缓冲没有解决问题,但可能的解决方案有:
我将验证您的函数是否真的被调用,您是否有一个映像,并且在此之前没有发送任何其他头文件。也许您的MVC框架生成了302?是否发生了mod_重写操作?是的,我确实启用了mod_重写。当在地址栏中键入时,您如何检查图像URL是否发回了200?(而不是生成一个302,然后重定向到一个200页。)你说“打字”——你确实试过直接复制粘贴而不是打字吗?你能从命令行中尝试类似wget的东西并观察它是否显示重定向吗?当图像的URL粘贴到地址栏时,Firebug会显示一个200代码,带有正确的内容类型标题-但我会先检查302是否发生。这正是我如此困惑的原因!当然但是,不要只检查浏览器中发生了什么,还要验证脚本中到底发生了什么。
public function image($hexCode='',$fileName) {
if (!$this->validRequest('get')) return false;
Framework::loadModel('plan_model.php');
$plan = new PlanModel();
// Return image data from Blob field in db.
$image = $plan->getImage('123');
if ($image) {
header("Content-Type: image/png");
print $image;
die;
} else {
echo 'error';
}
}