Friday 13 July 2012

Cross-origin resource sharing

Cross-origin resource sharing (CORS) เป็นเทคโนโลยีที่กำหนดขึ้นโดย W3C ที่จะทำให้ Web Page สามาถ Access ข้อมูลข้าม Domain ได้ (โดยปกติจะไม่สามารถทำได้ เพราะผิดกฎ Same Origin Policy) CORS กำหนดวิธีการสื่อสารระหว่าง Web Browser และ Web Server เพื่อที่จะสามารถอนุญาติให้ Access ข้อมูลข้าม Domain ได้อย่างปลอดภัย การ implement CORS ทางฝั่ง server สำหรับในกรณีที่เป็น Simple Request (HTTD Method มีค่าเท่ากับ HEAD, GET หรือ POST และ Content-Type มีค่าเท่ากับ application/x-www-form-urlencoded, multipart/form-data,text-plain) สามารถทำได้ง่ายๆ เพียงแค่ส่ง HTTP Header เพิ่ม ดังต่อไปนี้


สำหรับการเพิ่ม HTTP Header ในลักษณะนี้ จะเป็นการอนุญาติให้สามารถ Access ข้อมูลมาจากที่ไหนก็ได้ ซึ่งต้องระวังเป็นพิเศษ เนื่องจากเป็นการเสี่ยงที่จะเกิดปัญหา XSS attacts จาก Website ที่่ไม่หวังดี ทางที่ดี ควร grant access เฉพาะเท่าที่จำเป็น อย่างเช่น


สำหรับในกรณีที่ไม่ใช่ Simple Request (อย่างเช่นในกรณี HTTP Method มีค่าเท่ากับ PUT หรือ DELETE หรือในกรณีที่ Content-Type มีค่าเท่ากับ application/json) Browser จะต้องส่ง Preflight Request (เพื่อทำการขออนุญาติ) ก่อนที่จะส่ง Request ที่ต้องการออกไป เมื่อได้รับการอนุญาติจากทางฝั่ง Server ปลายทางแล้ว จึงจะสามารถส่ง Request ไปได้ ซึ่ง Browser จะเป็นผู้รับผิดชอบในการส่ง Preflight Request ดังกล่าวโดยอัตโนมัติ ทำให้เหมือนกับว่าเราส่งเพียงแค่ Request เดียว คือ Request ที่เราต้องการเท่านั้น


จะสังเกตุว่าการจะสามารถใช้เทคโนโลยี CORS ได้นั้น ต้องมีความร่วมมือเกิดขึ้นทั้งจากทางฝั่ง Server และทางฝั่ง Browser ปัจจุบัน Browser ที่รองรับการใช้เทคโนโลยี CORS ได้แก่ Chrome 3+, Firefox 3.5+, Safari 4+ และ IE 8+ สำหรับผู้ที่สนใจ สามารถศึกษาเพิ่มเติมได้จาก wikipedia  ส่วนอันนี้เป็น Tutorial เกี่ยวกับการใช้งาน CORS จาก HTML 5 Rock ครับ

แหล่งที่มา:
  1. http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
  2. http://www.html5rocks.com/en/tutorials/cors/

No comments:

Post a Comment