Content-Type: text/plain

posted on 15 Jan 2005 14:01 by ipats
เหอๆๆ.. อยู่ดีๆ ก็นึกมาเขียน
แบบว่าหงุดหงิดครับ
ไม่รุ้เป็นที่ web server คือที่ proxy กันแน่....

Content-Type คืออะไร...
ที่ผมจะพูดถึงนี่มันก็คือฟิลด์นึงใน header ที่บอกว่าข้อมูลที่ส่งมาด้วยเนี่ย
เป็นชนิดอะไร..
ถ้าเป็นรูปก็จะมีพวก image/gif, image/jpeg ฯลฯ
พวกข้อความก็ text/plain, text/css, text/html ฯลฯ
อื่นๆ ก็เช่น audio/wav, application/pdf ฯลฯ

การบอกประเภทแบบนี้ใช้อย่างแพร่หลายใน internet ครับ ทั้งการส่งเมล์ที่มีการผสมข้อมูล
หรือแม้กระทั่งบน web server

โดยปกติแล้ว web server จะต้องส่งข้อมูลตัวนี้มาที่ browser ให้ถูกต้อง เพื่อให้ browser ตัดสินใจได้ว่าจะทำอะไรกับข้อมูลตัวนี้ เช่น
เมื่อส่ง text/html มา browser ก็จะรุ้ว่าเป็น เอกสาร html ก็ render เป็น html
ถ้าส่งมาเป็น text/plain ก็นำมาแสดงผลใรูปแบบ plain text
ถ้ามาเป็น application/pdf ก็เปิด acrobat reader ฯลฯ

แล้วเกิดอะไรขึ้น?
ก็คือ เมื่อคืนผมไปเจอการส่งมาผิด (จริงๆ เจอหลายครั้งแล้ว)
ครั้งแรกเป็น wma ครับ ซึ่งปกติจะเป็น audio/x-ms-wma
แต่ server ส่งนี่มาให้ผม

HTTP/1.0 200 OK
Date: Sat, 15 Jan 2005 06:25:37 GMT
Server: Apache/2.0.50 (Fedora)
Last-Modified: Fri, 14 Jan 2005 16:17:15 GMT
ETag: "97008d-18e93b-5e24f8c0"
Accept-Ranges: bytes
Content-Length: 1632571
Content-Type: text/plain; charset=windows-874
X-Cache: MISS from totcache
Connection: close

แถมมี charset มาให้เรียบร้อยด้วย ="=

อีกครั้ง เป็น script cgi ครับ สกุล pl
มี output เป็น html แต่ส่ง header มาว่า

HTTP/1.0 200 OK
Date: Sat, 15 Jan 2005 06:18:34 GMT
Server: Apache/1.3.33 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2634a mod_ssl/2.8.21 OpenSSL/0.9.7a PHP-CGI/0.1b
0- header.htmlContent-type: text/html
Content-Type: text/plain
X-Cache: MISS from totcache
Connection: close

ใช้ firefox เปิด.. เห็นเป็น text ธรรมดาเลย...
แต่ใช้ IE เปิด มัน render เป็น html ให้.. ไรฟะ.. มีงี้อีก

ไม่แน่ใจว่าเป็นที่ web server หรือเป็นที่ totcache กันแน่....
แต่ยังไงก็ตาม.. เวลาที่เขียน script เพื่อ generate content เป็นอะไรก็แล้วแต่...
เพิ่ม header บอกด้วยนะครับ ว่าเป็นข้อมูลอะไร

ถ้าใน asp (vbscript) ก็ response.ContentType ="[type]"
ถ้าใน php ก็ header("Content-Type: [type]");
(น่าจะประมาณนี้แหละนะ.. เขียนได้แค่ 2 อย่างนี้อ่ะ -- ผมก็ไม่ค่อยได้เขียนหรอก อิอิ)

คนใช้จะได้ไม่ต้องงง ว่า อยุ่ดีๆ ไหงมีข้อมูลขยะโผล่มา
ประมาณนี้

0&ฒu?fฯฆูต๐C?3?{๑ซา ๚|g;ท?oฑาธม:ดzฟp\๓m?"ร

ปล. คิดว่า ie มันคงดูจาก extension ด้วยมั๊ง แต่ firefox ซื่อสัตย์ server บอกไรมาก็เชื่อ... (ซึ่งดีกว่า ie ที่ช่วยตัดสินใจไปหมด.. รวมทั้งโปรแกรมทั้งหลายจาก ms)

แก้ไขเมื่อ 15/1/2548 14:05:29

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

กี๊ดดด ภาษาต่างดาวทั้งน้านเลย =_=

เค้าเขียนกันยังไงเนี่ยเจ้าโปรแกรม
แต่ถ้าเป็นscriptยังพออ่านรู้เรื่อง

เมื่อวาน เรียน hex dec bin แค่นี้ก็ตายคาคอมพ์ไปแล้ว T_T ช่วยด้วยค๊าบบ
ขำตรงมันบอก charset มาด้วย :-D

ว่าแต่ มีวิธีเปิดดู header ง่ายๆมะ จริงๆอยากหาวิธีดูทั้งตอนเบราเซอร์ request ไป และที่เซิร์ฟเวอร์ response กลับมาเลยอ่ะ

#2 By PaePae on 2005-01-15 14:48

ลองดูที่นี่นะครับ
http://livehttpheaders.mozdev.org/

เพราะพี่ถามหาเลยนะเนี่ย ผมเลยได้ประโยชน์ด้วย
ไม่งั้นผมก็คงนั่งดู proxy log + telnet ต่อไป เหอๆๆ

#3 By ไอ้แพท.. on 2005-01-15 17:12

ขอบคุณครับ เอาไปเขียนแนะนำด้วยเลยนะ อิๆ ^^
http://www.exteen.com/comment.asp?user=paepae&entryid=18382

#4 By PaePae on 2005-01-16 23:36

#5 By (61.7.129.241) on 2005-09-25 16:01

#6 By (61.7.129.241) on 2005-09-25 16:01