คำเตือนประเภท MIME ใน chrome สำหรับภาพ png


115

เพิ่งเรียกใช้ไซต์ของฉันใน Chrome และน่าแปลกที่มีคำเตือนนี้สำหรับภาพ. png ของฉัน:

Resource interpreted as image but transferred with MIME type application/octet-stream.

ใครเคยเห็นสิ่งนี้มาก่อน?

ความนับถือ


สิ่งนี้เกิดขึ้นสำหรับฉันเช่นกัน แต่เฉพาะในเครื่อง dev ของฉัน คุณเคยหาคำอธิบายหรือไม่?
BrianFinkel

มีวิธีใดในการเปลี่ยนประเภท MIME ใน Cassini หรือไม่? ดูเหมือนว่าจะละเลยการ<staticContent>ตั้งค่าใน<system.webServer>ส่วนใน web.config
travis

1
เหตุใดฉันจึงไม่สามารถเป็นหนึ่งใน 78 upvotes สำหรับปัญหาเดียวกันได้ สายเกินไปเสมอ ....
Scott Selby

2
ช้าไปเกือบ 2 ปี; o)
Muleskinner

ฉันเพิ่งค้นพบว่าคุณสามารถกดแป้นควบคุมค้างไว้แล้วเลือกข้อผิดพลาดดีบักและคำเตือนเท่านั้น วิธีนี้บันทึกของคุณจะไม่รกด้วยข้อผิดพลาดประเภทละครใบ้ในขณะที่คุณกำลังแก้ไขข้อบกพร่อง แต่คุณจะเห็นทุกอย่าง มีประโยชน์มาก
Devil's Advocate

คำตอบ:


84

ฉันพบสิ่งนี้ขณะเรียกใช้แอป ASP.NET WebForms โดยใช้ ASP.NET Development Server

ฉันสงสัยว่าจะมีบางอย่างที่คล้ายกันเกิดขึ้นหากคุณใช้ IIS Express เป็นเซิร์ฟเวอร์ของคุณด้วย (VS 2010 SP1)

ฉัน 'แก้ไข' ปัญหาของฉันในเครื่องโดยแก้ไขการตั้งค่าโปรเจ็กต์ (ภายใต้เว็บ) และเปลี่ยนจาก ASP.NET Development Server เป็น IIS บนเครื่องภายในของฉัน ฉันเห็นว่า PNG ได้รับการกำหนดอย่างถูกต้องแล้วว่าเป็นประเภท MIME ของรูปภาพและเมื่อฉันเข้าสู่เซิร์ฟเวอร์ IIS ในพื้นที่ของฉันมันจะให้บริการไฟล์ด้วยประเภทที่ถูกต้อง


11
การใช้ IIS Express จะไม่มีคำเตือนประเภท MIME ในภาพ PNG โดยทั่วไปแล้วเป็นมาตรฐาน IIS 7.5 ในรูปแบบพกพามากขึ้น (และ IIS มาตรฐานไม่มีปัญหาในการให้บริการ PNG) ฉันเพิ่งสร้างโครงการใหม่ยืนยันคำเตือนใน Cassini (เซิร์ฟเวอร์ dev) ตั้งค่าเป็น IIS Express และยืนยันว่าคำเตือนหายไป
patridge

สิ่งที่แปลกประหลาดที่ฉันพบคือฉันได้สร้างแอปพลิเคชั่น MVC ASP.NET 4 และมันทำงานได้ดีในการโหลดไฟล์ png ใน Cassini ฉันอัปเกรดแอปพลิเคชัน MVC ASP.NET 1 เป็น 4 และพบปัญหานี้ใน Cassini ด้วยไฟล์ png เดียวกัน ความคิดใด ๆ ?
MattB

1
@MattB - ฉันขอแนะนำให้เปรียบเทียบไฟล์ config (csproj และ web.config) ระหว่างโปรเจ็กต์ MVC4 ใหม่ของคุณกับโปรเจ็กต์ที่อัปเกรดแบบเคียงข้างกันในโปรแกรมแก้ไขข้อความ ฉันเดาอย่างแรกคือมีการอ้างอิงการประกอบหรือสิ่งที่คล้ายกันที่ไม่ได้รับการอัปเกรดโดยอัตโนมัติ หากซับซ้อนกว่านั้นคุณอาจต้องเปิดคำถามใหม่และใส่รายละเอียดเพิ่มเติม
Stefan Mohr

@StefanMohr ขอบคุณสำหรับการตอบกลับขออภัยที่กลับมาช้า ฉันทำการเปรียบเทียบทั้งสองอย่างและไม่ได้วิ่งข้ามสิ่งที่ดูผิดปกติ ฉันไปไกลถึงการเปลี่ยนแปลงที่จำเป็นกับทั้ง csproj และ web.configs เพื่อให้เหมือนกับโครงการ ASP.Net MVC 4 ที่สร้างขึ้นใหม่ไม่มีโชคเช่นนี้ ในที่สุดฉันเพิ่งสร้างโครงการใหม่และย้ายทุกอย่างไปยังโครงการใหม่
MattB

เว็บไซต์นี้โฮสต์บน Azure และฉันได้รับข้อผิดพลาดที่น่ารำคาญนี้ในการบรรจุคอนโซลของฉัน
Shimmy Weitzhandler

4

คำเตือนนี้บอกคุณว่าเว็บเซิร์ฟเวอร์ของคุณไม่ได้กำหนดค่าให้ส่งข้อมูลเมตาประเภท MIME ที่ถูกต้องสำหรับรูปภาพ PNG คุณควรปรึกษาผู้ดูแลระบบสำหรับเว็บเซิร์ฟเวอร์ของคุณและขอให้ตั้งค่าการแมป MIME ที่ถูกต้อง


3
@JimG หากคุณเป็นผู้ดูแลเว็บเซิร์ฟเวอร์คุณอาจพบคำตอบในเว็บไซต์น้องสาวสำหรับผู้ดูแลเว็บ
Rowland Shaw

+1 นี่คือคำตอบที่บรรยายและมีประโยชน์ที่สุด ไม่รู้ว่าทำไมถึงได้รับการโหวตลดลงมาก
Sir Crispalot

@JimG หากคุณเป็นผู้ดูแลระบบคุณจะต้องบอกว่าคุณใช้เว็บเซิร์ฟเวอร์ใดหรือถามผู้ดูแลเว็บ
Rowland Shaw

ตกลงคำตอบที่มีประโยชน์ที่สุด ไม่เข้าใจ @JimG. downvote
Anoyz

4

ฉันเพิ่มประเภทเช่นนี้ใน. htaccess (AddType image / type extention) เช่น

AddType image/png cur
AddType image/svg+xml svg svgz

2

แน่นอนว่าโซลูชันข้างต้นนั้นสมบูรณ์แบบ เพื่อหลีกเลี่ยงคำเตือนและสำหรับคอนโซลที่สะอาดฉันได้ทำหลังจากการเปลี่ยนแปลงในรหัสของฉัน (ซึ่งเกินไปสำหรับ ASP.NET Development Server) ฉันเขียนตัวจัดการพิเศษสำหรับสิ่งนี้:

PNGHandler.cs

class PNGHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    { 
       if(context.Request.HttpMethod == "GET") 
       {
             string requestedFile = context.Server.MapPath(context.Request.FilePath);
             FileInfo fileinfo = new FileInfo(requestedFile);
             string contentType = "";
             if (fileinfo.Exists && fileinfo.Extension.Remove(0, 1).ToUpper() == "PNG")
             {
                   contentType = "image/png";
                   context.Response.ContentType = contentType;
                   context.Response.TransmitFile(requestedFile);
                   context.Response.End();
              }
         }
    }
}

และเพิ่ม Http Handler ใน web.config ภายใต้ system.web

<system.web>
 <httpHandlers>
 <add path="*.png" verb="*" type="PNGHandler" />
 </httpHandlers>
</system.web>

0

วิธีที่เร็วที่สุดในการกำจัดสแปมที่ฉันพบคือการใช้แป้น CTRL เพื่อเลือกข้อผิดพลาดคำเตือนและการแก้ไขข้อบกพร่องแทนทั้งหมด

ทั้งหมด: ใส่คำอธิบายภาพที่นี่

ข้อผิดพลาดคำเตือนและการแก้ไขข้อบกพร่อง: ใส่คำอธิบายภาพที่นี่


0

ฉันได้แก้ไขปัญหานี้โดยการเปิดใช้งานเนื้อหาคงที่ในแผงควบคุม > โปรแกรมและคุณลักษณะ > เปิดหรือปิดคุณสมบัติของ Windows > ส่วนประกอบ IIS > บริการเวิลด์ไวด์เว็บ > คุณสมบัติ HTTP ทั่วไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.