ยอมให้ iOS แอปใช้งาน http ได้ แบบเจาะจงโดนเมน หรือยอมให้ใช้วิธีการเข้ารหัสแบบเก่า
การใช้งาน http จะเป็นส่ง และรับ request แบบไม่เข้ารหัส ซึ่งอาจถูกดักฟัง หรือปลอมแปลงได้ระหว่างทาง และนั่นทำให้ข้อมูลผู้ใช้งานไม่ปลอดภัย ข้อความอาจไม่น่าเชื่อถือแอปเปิลเลยไม่ได้เปิดให้เชื่อมต่อ http มาโดยปริยายแต่เราต้องระบุว่าแอปเราอยากให้ใช้ http ได้ด้วย

แต่มีหลายบริษัทการก็มีความจำเป็นต้องใช้ http เพื่อเชื่อมต่อ service บางอย่างเช่น ผู้ให้บริการโทรศัพท์เคลื่อนที่ เข้าแอปในค่ายตัวเองได้ง่ายโดยไม่ต้องยืนยันตัวตน เพราะถือว่ามี sim card อยู่กับตัวแล้ว
หรืออาจจะอยากต่อ server ของเราเองเพื่อทดลองใช้งานเล็ก ๆ น้อย หรือระบบภายในที่ไม่ยอมซื้อ certificates
สำหรับแบบธรรมดานั้น เราจะระบุในไฟล์ Info.plist ว่า
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>ซึ่งจริง ๆ แล้วเราสามารถระบุ domain ของ host ที่จะอนุญาตให้แอปยิงแบบ http ได้ เพื่อที่ระบบของ iOS จะไม่ยอมยิงนอกเหนือจาก domain ที่ได้ระบุไว้เช่น เราจะยอมให้ใช้กับ domain someservice.co.th และ subdomains ทั้งหมดก็ระบุไปว่า
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>someservice.co.th</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>ซึ่งในชุดของ NSAppTransportSecurity มี key อื่น ๆ ให้ใช้อีกคือ
NSIncludesSubdomainsNSExceptionAllowsInsecureHTTPLoadsNSExceptionRequiresForwardSecrecyNSExceptionMinimumTLSVersionNSThirdPartyExceptionAllowsInsecureHTTPLoadsNSThirdPartyExceptionRequiresForwardSecrecyNSThirdPartyExceptionMinimumTLSVersion
และสามารถใช้รวม ๆ กันได้เช่น

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>someservice.co.th</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
<key>gucode.live</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>odds.team</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>แต่ทางที่ดีควรจะยกมาตรฐานให้ได้สูงสุดตามที่แอปเปิลแนะนำมากกว่า
สวัสดีครับ
