Web 关于内容类型的http响应

Web 关于内容类型的http响应,web,http-headers,webserver,Web,Http Headers,Webserver,其他一切都一样。那又有什么区别呢? 当我使用我编写的简单测试web服务器进行测试时: 在第一种情况下,浏览器接收到了确切的html,但图像没有显示出来。一个三角形的小图像,一个嵌入在矩形中的圆圈出现了 在第二种情况下,内容类型为:image/* 正在下载请求的映像,但无法打开映像 例如,如果 Content-Type:image/* 图像未被下载,但浏览器感知到的html被更改为 Content-Type = image/png 我的问题是如何使用这些内容类型 Http响应: <

其他一切都一样。那又有什么区别呢? 当我使用我编写的简单测试web服务器进行测试时:

在第一种情况下,浏览器接收到了确切的html,但图像没有显示出来。一个三角形的小图像,一个嵌入在矩形中的圆圈出现了

在第二种情况下,内容类型为:image/* 正在下载请求的映像,但无法打开映像

例如,如果

Content-Type:image/*
图像未被下载,但浏览器感知到的html被更改为

Content-Type = image/png

我的问题是如何使用这些内容类型


Http响应:

 <html>
 <body style="margin: 0px;">
 <img style="-web-user-select: none" src="http://localhost:5000"/>
 </body>
 </html>
HTTP/1.1200正常
内容类型:图像/png
内容长度:27892
服务器:李尔尼
\211PNG
g9\357ax\257a>\307\365\333\324\3658\313
\234H\245\374\215\321\371\373\317\302Rh\364\263K\353\273\362\312+\243\200\\321\376\217\337\360u)\373X\355q*1\267\235\342;I\316\341\265\310\317I:q\332\325\317{0\245T\334^WH#l s\200\231\2422\252q>;\346\312d\252X\201\365\312\304%:\216H\316\306\372{\323axDB\215\3178Y\345\254*\245\366R\357a\235\1175;\2148\d\236S\232\231\370z\342w\335V\351\351\351\351\351\351\351\351\351
内容类型:text/html
[...]
如果我将[内容类型标题]更改为
Content-Type:image/*
,其他所有内容都是一样的。那么这有什么区别呢

你很幸运:你的浏览器遵循健壮性原则。它可能会说:“我不知道你想做什么,但我不会将HTML呈现为图像。我想我只会发出一个“无法显示页面”错误。”

而是说:“等等,内容看起来确实像HTML,为什么不试试呢?”

您将希望以这样的方式提供HTML,图像也是如此:使用适当的图像MIME类型提供它们

另见:

:

“内容类型”字段用于描述数据 完全包含在主体中,接收用户代理可以 选择适当的代理或机制将数据呈现给 用户,或以适当的方式处理数据 此字段中的值称为媒体类型


我试图通过在收到请求时通过套接字发送图像来在浏览器上显示图像。因此,现在我正在读取图像(字符串中为“imagedat”)。为此,我创建了类似“imagedat”的http响应当然有必要的标题。但是图像没有显示在浏览器上。我这样做正确吗?@Chaitanya否。你为什么要在HTML标记中嵌入图像数据?只需发送指示图像即将出现的标题,然后读取文件并直接传输其内容,而不进行更改。好的。我按照你说的做了,但图像仍然是正确的未在浏览器上显示。我正在以字符串形式填充图像数据,并将其附加到标题中,然后发送响应。我是否正确?@Chaitanya这可能是正确的,具体取决于响应的外观。请使用例如的转储更新您的问题,但首先尝试亲自查看问题的症结所在响应,可能是将其与公共网站的工作响应进行比较。同时显示用于读取图像文件并将其写入套接字的代码。@Chaitanya我认为您应该编写字节数组,而不是字符串。
 <html>
 <body style="margin: 0px;">
 <img style="-web-user-select: none" src="http://localhost:5000"/>
 </body>
 </html>
 HTTP/1.1 200 OK
 Content-Type:image/png
 Content-Lenth:27892
 Server:Learnee

 \211PNG

g9\357ax\257a>\307\365\333\324\3658\313
\234H\245\374\215\321\371\373\317\302Rh \364\263K\353\273\362\312+\243\200\\321\376\217\337\360u)\373X\355q*1\267\235\342;I\316\341\265\310\317I:q\332\325\317{0\245T\334^WH#l  s\200\231\2422\252q>;\346\312d\252X\201\365\312\304%:\216H\316\306\372{\323axDB\215\3178Y\345\254*\245\366R\357a\235    җ\2148\252D\236S\232\231\370z\342w\337\375V\265Z\315c/:,d\311<շ\367D1\356\337\326֖\373\242\263t\351\325\377IRmo\264R\376S\200\352_\276\242K7\214\263\333{\230\267횥\313qc\317\347S\3022<ه\202\273ڟ\203l\310\344\216\356M\322Я\225\240\300=N1\277\271\355\327ߺtv̀ٙ\231\231\374\226-[\204~\265U\341\220OO\344\211q\316\257\246\276\345&\354\352\227\325!\274<\264\233\234\352p\263\301\3237\275\334و\203]\2712\371\332\306I\222\207\233\341獶\215\257&7Y7 K\302u@\373\235\370   0\275\373ؾ$\235B$z?\200zD\343yǯܓ\356\241BW\327\320m\214\337\301f\327@\300a\201\262C\257\244\216p\366\330\220\325\301@\215\332G/-\320Ԃ\267\246X%\344ȔD\216N{\277Q\277\3361M\276\264~/i\213\3529D\320@`\307\314N@=\334\316\200\272\300)\367}?<L\233D\372\227\275-[$\375\330.\222\257T\351\313em\377\263q]:\307@p%Xӭ\204\222\365>8K\266ga\200@
H3\352Z3\200R\320\347SU\301
G>\323!\307tD\200\205{~\370\3524\371鶌>S\220\263D5\224(@\214SN\221{\264L@f\216%\247\200  \360\3455\376Y`\341s\263U2YR\214p\363\320pA[?\237A\270@\357\214\221\273x!\240*\327o\231"\367\215\314\325&E\321Su \220)\200\243\261\363@\200\335a\265\337.\242~Y\300\242d\214f\232\262\231\275E\370㣫W\257\216%\223\3114(~
+=\261\347EP|\264\377G\200L\213řB\241\220۴iS\371\251\247\236r\360OD\231\371G\376a\354tt
\364~6\217\3471\364'
bool ServerFileSystem::getDataFromFile(std::string urlPath, std::string& chunkData)
{
std::stringstream stream;
std::cout << urlPath << std::endl;

if(!strcmp(urlPath.c_str(), "/"))
{
    urlPath = urlPath + "index.html";
    std::cout << "URL Path: " << urlPath;
}

std::string localPath = SERVER_ROOT + urlPath;
std::ifstream file(localPath.c_str());

file.seekg(0, std::ifstream::beg);

while(file.tellg() != -1)
{
    char *p = new char[1024];

    bzero(p, 1024);
    file.read(p, 1024);

    stream << p;
    stream.flush();

    delete p;
}

chunkData = stream.str();

file.close();

return true;
} 
HTTP/1.1 200 OK
Content-Type:text/html

<html>[...]</html>