WebAPI ของฉันถูกปรับใช้ในสภาพแวดล้อมอินทราเน็ต นั่นหมายความว่าการรักษาความปลอดภัยก็ไม่ได้กังวลของฉัน
มันดูเหมือนว่า ธ เป็นมิตรมากขึ้นให้กับลูกค้าและง่ายต่อการใช้
มีข้อกังวลอื่นใดที่ฉันอาจพลาดไป?
WebAPI ของฉันถูกปรับใช้ในสภาพแวดล้อมอินทราเน็ต นั่นหมายความว่าการรักษาความปลอดภัยก็ไม่ได้กังวลของฉัน
มันดูเหมือนว่า ธ เป็นมิตรมากขึ้นให้กับลูกค้าและง่ายต่อการใช้
มีข้อกังวลอื่นใดที่ฉันอาจพลาดไป?
คำตอบ:
นี่เป็นคำถามที่ค่อนข้างกว้างและสามารถรับประกันวิกิตัวเองได้ นอกจากนี้ยังมีค่อนข้างน้อยใน Google เกี่ยวกับทั้งสอง แต่ฉันคิดว่าฉันสามารถเข้าถึงประเด็นสำคัญบางประการได้
หากสิ่งเหล่านี้ไม่ใช่สิ่งที่น่ากังวลฉันจะไปกับสิ่งที่ง่ายที่สุดหรือคุ้นเคยที่สุดสำหรับคุณ หากเป็นแบบ tossup ให้ลองใช้ CORS เนื่องจากเป็นโซลูชันที่ "ทันสมัยกว่า" และ JSONP เป็นแฮ็กมากกว่าโดยเปลี่ยนข้อมูลให้เป็นสคริปต์เพื่อข้ามข้อ จำกัด ข้ามโดเมน อย่างไรก็ตาม CORS ต้องการการกำหนดค่าฝั่งเซิร์ฟเวอร์มากขึ้น
หากคุณใช้ jQuery ฉันไม่แน่ใจว่าคุณคิดว่า CORS นั้น " เป็นมิตรกับลูกค้ามากกว่ามากและง่ายต่อการนำไปใช้ " ดูhttps://gist.github.com/3131951 jQuery สรุปรายละเอียดของ JsonP และ CORS อาจเป็นเรื่องยากที่จะฝังในฝั่งเซิร์ฟเวอร์ของคุณขึ้นอยู่กับเทคโนโลยีที่คุณใช้
ฉันเพิ่งพัฒนาเว็บแอปโดยใช้ jquery และ backbone.js ซึ่งอ่านจากบริการเว็บข้ามโดเมนต่างๆที่เราควบคุมและลงเอยด้วยการใช้ Json-P แทน CORS เพราะเราต้องรองรับ IE7 และมันก็ง่ายกว่าเล็กน้อย ฝั่งเซิร์ฟเวอร์ (เรารัน Django w / DjangoRestFramework) และแทบจะเหมือนกันกับ jquery ในฝั่งไคลเอ็นต์
คุณเป็นคนสวย หากคุณไม่ต้องรองรับเบราว์เซอร์เดิม (ที่ออกเมื่อ 6 ปีก่อน) ฉันจะไปกับ CORS อย่างแน่นอน
CORS ใช้งานได้ง่ายกว่าหาก API ของคุณยังไม่รองรับ JSONP หรือ CORS การเพิ่มส่วนหัวแบบคงที่เพียงไม่กี่ตัวจะง่ายกว่าการแก้ไขเนื้อหาของการตอบสนอง
นอกจากนี้ยังง่ายกว่าในการแคชคำขอโดยใช้ CORS คำขอ JSONP แต่ละรายการจะต้องเป็นแบบไดนามิกแม้ว่าจะมีเนื้อหาแบบ memcached ก็ตาม
JSONP ยังคงเป็นแท็กสคริปต์ดังนั้นไม่ว่าอะไรจะทำให้เกิดพฤติกรรมซิงโครนัสในระดับหนึ่ง CORS จะไม่
JSONP สามารถเป็น GET เท่านั้น และเช่นเดียวกับ CORS คุณสามารถใช้วิธีใดก็ได้
สุดท้าย แต่ไม่ท้ายสุดหากคุณใช้ jQuery v1.xให้พิจารณาว่าตัวจัดการerror
และcomplete
(หรือดีกว่าfail
และalways
) ยังไม่ถูกเรียกสำหรับคำขอ JSONP ในสถานการณ์ทั่วไปบางอย่าง (เช่นข้อผิดพลาดของเครือข่าย) แน่นอนว่ามีวิธีแก้ปัญหา (การตั้งค่าการหมดเวลาปลั๊กอิน jQuery-JSONP) แต่ฉันพบว่า CORS น่ารำคาญน้อยกว่าโดยเฉพาะอย่างยิ่งเมื่อคำขอข้ามโดเมนมาจากอุปกรณ์มือถือเท่านั้น (เช่นแอปไฮบริด) ดังนั้นคุณจึงไม่ต้องการการสนับสนุนสำหรับเบราว์เซอร์ที่โชคร้าย
ตาม Spring Documentation JSONP เป็นการแฮ็กและไม่ใช่วิธีแก้ปัญหาที่เหมาะสมของ Cross Origin Resource Sharing ดังนั้นหากคุณไม่กังวลเรื่องความปลอดภัยให้ตรวจสอบที่มาของโดเมนบนเซิร์ฟเวอร์ของคุณและเพิ่มส่วนหัว Access-Control-Allow-Origin Response
Web API ของเราไม่ทำงานบน Safari (iOS 9.1) ที่มี Windows Authentication มันทำงานร่วมกับ Safari + iOS 8.4 เมื่อเราเปลี่ยนเป็น JSONP Safari เริ่มทำงานอีกครั้ง ตรวจสอบลิงค์นี้สำหรับข้อมูลเพิ่มเติม