http header and https
บันทึกไว้ซะหน่อย วันนี้เจอปัญหาประหลาดเกี่ยวกับ service เดิมทีใช้แบบ http มาโดยตลอดและเข้าได้ปกติไม่มีปัญหา จนเกิดปัญหาที่ มช. ต้องปรับเปลี่ยนทุกอย่างเป็น https แล้วพบว่ามันเรียกหน้าเว็บไม่ได้กับ Chrome และ Opera (ใช้ Engine เดียวกัน)
เจ้า service นี้ข้างหลังบ้านเป็น php เข้าแบบ http ธรรมดาได้ ใช้ firefox ได้ทั้ง http และ https ตอนแรกก็มุ่งประเด็นไปที่การ config nginx แต่ปรับกันแล้วก็เหมือนไม่มีอะไรผิดปกติ..
ใช้ curl เรียกจะเจอแบบนี้
HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR
แต่ถ้าเรียกโดย option http 1.1 จะได้
curl --http1.1 'https://ddd.ddd/'
ถ้า Chrome จะ error ว่า
ERR_SPDY_PROTOCOL_ERROR
เห็นเค้าไล่หากันอยู่นาน และ ไปสะดุดที่พี่ต้น Kamthorn บ่นว่ามันเป็นหน้านี้หน้าเดียวถ้าเขียน php ใหม่ขึ้นมาก็ไม่เห็นมันจะ error ก็เลยเข้าไปไล่ source ดูและพบว่า script php มันมี
header('charset=utf-8');
แปะอยู่บรรทัดแรกเลย และ เป็นอะไรที่น่าสงสัยมากสุดละเลยจัดการ comment มันออกซะ…… และแล้วทุกอย่างก็กลับมาทำงานเหมือนเดิน… ฮ่วยยยย!!!
Update: พบว่าคนเขียนใส่ header ผิด format ด้วยถ้าใส่แบบด้านล่างจะทำงานถูกต้อง
header('Content-type: text/html; charset=utf-8');