资源被解释为图像,但使用的 MIME 类型是文本/HTML,curl,php。

4
我遇到了一个之前没有见过的错误。 我正在使用cURL尝试从我的站点获取验证码图像,但是我得到的是这个错误信息,而不是我想要的图像。
if(isset($_GET['captcha'])) {
 $curl->open("GET","https://mydomain.com");
 $curl->exec();

 preg_match('/_mobile_sess=[^;]+/', $curl->getHeaders(), $sess);
 $_SESSION['cookie'] = $sess[0]; 

 preg_match('/ame="authenticity_token" type=\"hidden\" value=\"(.+?)\"/i',$curl->responseText, $tkn);

 $_SESSION['token'] = $tkn[1];
 preg_match('/\/signup\/captcha\/([0-9-a-z]+)\.gif/i', $curl->responseText, $cs);
 $_SESSION['captchaUrl'] = $cs[1];

 $curl->open("GET", "http://mydomain.com" . $cs[0]);
 $curl->cookie = $_SESSION['cookie'];
 $curl->exec();
 echo $curl->responseText;

 die;

我在HTML文档的头部设置了MIME类型为<meta http-equiv="Content-Type" content="image/gif">,但仍然遇到相同的问题。

这是我试图输出图像的表单。

if(empty($_SERVER['QUERY_STRING'])){
  echo "<center><form method='POST' action='?go'>
  <input  type='hidden' name='nameC' value='- SAFAL -' ><br/>
  <b>User Name</b><br><input name='login' size='30' id='login'    value='safal".rand(111111,9999999)."'><br/>
 <b>Password</b><br><input name='senha' id='senha' size='30' value='".rand()."'><br/>  <br>
 <img src='?captcha'><br/>
 <input name='cs' id='cs' placeholder='Put The Capcha' size='20'  onclick='if(this.value==\"Digite aqui\") this.value=\"\"'><br><br><br>
 <input type='submit' value='Click Here' id='btn'>
 </form>";
}

你以前没见过哪个错误? - Pedro Lobito
2个回答

6

通过Google搜索偶然发现了这个问题。为了提供参考,我分享一下我的经验:

如果你像这样使用单引号设置背景图:background-image: url('../img/sample.png');那么在Chrome / Opera控制台中也会显示此警告。

消除引号可以解决这个问题。


+1 - 可以看到其他格式不正确的 background-image 声明也存在相同的错误,例如 background-image: url();。格式不正确的 CSS 可以出现在页面的任何位置,或者在链接的样式表中。 - cmbuckley
感谢您的添加 @cbuckley - webketje

0
在你打印流到输出之前,在你的PHP块代码中放置header('Content-Type: image/gif');。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接