{"id":464,"date":"2015-11-02T15:41:05","date_gmt":"2015-11-02T07:41:05","guid":{"rendered":"http:\/\/www.fh1986.com\/?p=464"},"modified":"2015-11-02T15:41:05","modified_gmt":"2015-11-02T07:41:05","slug":"%e5%85%b3%e4%ba%8eios9%e4%b8%ad%e7%9a%84app-transport-security%e7%9b%b8%e5%85%b3%e8%af%b4%e6%98%8e%e5%8f%8a%e9%80%82%e9%85%8d","status":"publish","type":"post","link":"https:\/\/www.fh1986.com\/index.php\/archives\/464.html","title":{"rendered":"\u5173\u4e8eiOS9\u4e2d\u7684App Transport Security\u76f8\u5173\u8bf4\u660e\u53ca\u9002\u914d"},"content":{"rendered":"<p>iOS9\u4e2d\u65b0\u589eApp Transport Security\uff08\u7b80\u79f0ATS\uff09\u7279\u6027, \u4e3b\u8981\u4f7f\u5230\u539f\u6765\u8bf7\u6c42\u7684\u65f6\u5019\u7528\u5230\u7684HTTP\uff0c\u90fd\u8f6c\u5411TLS1.2\u534f\u8bae\u8fdb\u884c\u4f20\u8f93\u3002\u8fd9\u4e5f\u610f\u5473\u7740\u6240\u6709\u7684HTTP\u534f\u8bae\u90fd\u5f3a\u5236\u4f7f\u7528\u4e86HTTPS\u534f\u8bae\u8fdb\u884c\u4f20\u8f93\u3002<\/p>\n<p><!--more--><\/p>\n<p>\u539f\u6587\u5982\u4e0b\uff1a <\/p>\n<p><pre class=\"csharpcode\">App Transport Security\n\nApp Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. ATS prevents accidental disclosure, provides secure default behavior, and is easy to adopt; it is also on by default in iOS 9 and OS X v10.11. You should adopt ATS as soon as possible, regardless of whether you\u2019re creating a new app or updating an existing one.\n\nIf you\u2019re developing a new app, you should use HTTPS exclusively. If you have an existing app, you should use HTTPS as much as you can right now, and create a plan for migrating the rest of your app as soon as possible. In addition, your communication through higher-level APIs needs to be encrypted using TLS version 1.2 with forward secrecy. If you try to make a connection that doesn't follow this requirement, an error is thrown. If your app needs to make a request to an insecure domain, you have to specify this domain in your app's Info.plist file\n\n<\/pre>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n    font-size: small;\n    color: black;\n    font-family: consolas, \"Courier New\", courier, monospace;\n    background-color: #ffffff;\n    \/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n    background-color: #f4f4f4;\n    width: 100%;\n    margin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<p>\u5982\u679c\u6211\u4eec\u5728iOS9\u4e0b\u76f4\u63a5\u8fdb\u884cHTTP\u8bf7\u6c42\u662f\u4f1a\u6536\u5230\u5982\u4e0b\u9519\u8bef\u63d0\u793a\uff1a\n<\/p>\n<p><strong>App Transport Security has blocked a cleartext HTTP (http:\/\/) resource load since it is insecure. Temporary exceptions can be configured via your app&#8217;s Info.plist file.<\/strong>\n<\/p>\n<p>\u7cfb\u7edf\u4f1a\u544a\u8bc9\u6211\u4eec\u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528HTTP\u8fdb\u884c\u8bf7\u6c42\uff0c\u9700\u8981\u5728Info.plist\u65b0\u589e\u4e00\u6bb5\u7528\u4e8e\u63a7\u5236ATS\u7684\u914d\u7f6e\uff1a<\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>NSAppTransportSecurity<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>NSAllowsArbitraryLoads<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">true<\/span><span class=\"kwrd\">\/&gt;<\/span>\n<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span>\n<\/pre>\n<p><style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n    font-size: small;\n    color: black;\n    font-family: consolas, \"Courier New\", courier, monospace;\n    background-color: #ffffff;\n    \/<em>white-space: pre;<\/em>\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n    background-color: #f4f4f4;\n    width: 100%;\n    margin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<\/p>\n<p>\u4e5f\u5373\uff1a\n<\/p>\n<p><a href=\"http:\/\/static.oschina.net\/uploads\/space\/2015\/0819\/161548_yDKI_222120.jpeg\"><img decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/space\/2015\/0819\/161548_yDKI_222120.jpeg\"\/><\/a>\n<\/p>\n<p>\u8fd9\u6bb5\u914d\u7f6e\u4e2d\u7684NSAppTransportSecurity\u662fATS\u914d\u7f6e\u7684\u6839\u8282\u70b9\uff0c\u914d\u7f6e\u4e86\u8282\u70b9\u8868\u793a\u544a\u8bc9\u7cfb\u7edf\u8981\u8d70\u81ea\u5b9a\u4e49\u7684ATS\u8bbe\u7f6e\u3002\u800cNSAllowsAritraryLoads\u8282\u70b9\u5219\u662f\u63a7\u5236\u662f\u5426\u7981\u7528ATS\u7279\u6027\uff0c\u8bbe\u7f6eYES\u5c31\u662f\u7981\u7528ATS\u529f\u80fd\u3002\n<\/p>\n<p>\u76f4\u5230\u524d\u9762\u7684\u914d\u7f6e\u53ef\u4ee5\u5b8c\u7f8e\u7684\u9002\u914diOS9\u4e86\uff0c\u4f46\u662f\u5982\u679c\u4f60\u60f3\u9075\u5faa\u82f9\u679c\u7ed9\u51fa\u7684\u6807\u51c6\uff0c\u8ba9\u81ea\u5df1\u7684\u6570\u636e\u66f4\u52a0\u5b89\u5168\uff0c\u90a3\u4e48\u9700\u8981\u7ee7\u7eed\u5f80\u4e0b\u770b\u3002\n<\/p>\n<p>\u5176\u5b9eATS\u5e76\u4e0d\u5355\u5355\u9488\u5bf9HTTP\u8fdb\u884c\u4e86\u9650\u5236\uff0c\u800c\u662f\u5bf9HTTPS\u4e5f\u6709\u4e00\u5b9a\u7684\u8981\u6c42\uff0c\u4ee5\u767e\u5ea6\u7684\u5730\u5740\u4e3a\u4f8b\uff0c\u5982\u679c\u5728App\u4e2d\u8bf7\u6c42https:\/\/baidu.com\u7684\u8bdd\uff0c\u662f\u4f1a\u6536\u5230\u5982\u4e0b\u7684\u9519\u8bef\u4fe1\u606f\uff1a\n<\/p>\n<p><strong>NSURLSession\/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)<\/strong>\n<\/p>\n<p>\u67e5\u9605\u4e86\u4e00\u4e0b\u5b98\u65b9\u8d44\u6599\uff08<a href=\"https:\/\/developer.apple.com\/library\/prerelease\/ios\/technotes\/App-Transport-Security-Technote\/\">https:\/\/developer.apple.com\/library\/prerelease\/ios\/technotes\/App-Transport-Security-Technote\/<\/a>\uff09\uff0c\u53d1\u73b0HTTPS\u7684\u8bf7\u6c42\u9700\u8981\u6ee1\u8db3\u4e0b\u9762\u7684\u8981\u6c42\uff1a<\/p>\n<pre class=\"csharpcode\">These are the App Transport Security requirements:\n\nThe protocol Transport Security Layer (TLS) must be at least version 1.2.\n\nConnection ciphers are limited to those that provide forward secrecy (see the list of ciphers below.)\n\nCertificates must use at least an SHA256 fingerprint with either a 2048 bit or greater RSA key, or a 256 bit or greater Elliptic-Curve (ECC) key.\n<\/pre>\n<p><style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n    font-size: small;\n    color: black;\n    font-family: consolas, \"Courier New\", courier, monospace;\n    background-color: #ffffff;\n    \/<em>white-space: pre;<\/em>\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n    background-color: #f4f4f4;\n    width: 100%;\n    margin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<\/p>\n<p>\u6839\u636e\u539f\u6587\u63cf\u8ff0\uff0c\u9996\u5148\u5fc5\u987b\u8981\u57fa\u4e8eTLS 1.2\u7248\u672c\u534f\u8bae\u3002\u518d\u6765\u5c31\u662f\u8fde\u63a5\u7684\u52a0\u5bc6\u65b9\u5f0f\u8981\u63d0\u4f9bForward Secrecy(\u6b63\u5411\u4fdd\u5bc6\uff1f\u8fd9\u4e2a\u4e0d\u6e05\u695a\u662f\u4ec0\u4e48\uff0c\u597d\u5947\u7684\u7b52\u5b50\u627e\u8d44\u6599\u5427\uff5e)\uff0c\u6587\u6863\u4e2d\u7f57\u5217\u51fa\u652f\u6301\u7684\u52a0\u5bc6\u7b97\u6cd5\uff08\u5982\u4e0b\u8868\uff09\u3002\u6700\u540e\u5c31\u662f\u8bc1\u4e66\u81f3\u5c11\u8981\u4f7f\u7528\u4e00\u4e2aSHA256\u7684\u6307\u7eb9\u4e0e\u4efb\u4e00\u4e2a2048\u4f4d\u6216\u8005\u66f4\u9ad8\u4f4d\u7684RSA\u5bc6\u94a5\uff0c\u6216\u8005\u662f256\u4f4d\u6216\u8005\u66f4\u9ad8\u4f4d\u7684ECC\u5bc6\u94a5\u3002\u5982\u679c\u4e0d\u7b26\u5408\u5176\u4e2d\u4e00\u9879\uff0c\u8bf7\u6c42\u5c06\u88ab\u4e2d\u65ad\u5e76\u8fd4\u56denil\u3002\n<\/p>\n<p>\u652f\u6301Forward Secrecy\u7684\u52a0\u5bc6\u65b9\u5f0f<\/p>\n<ul>\n<li>\n<pre class=\"csharpcode\">TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\n\nTLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\n\nTLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\n\nTLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\n\nTLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\n\nTLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\n\nTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\n\nTLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\n\nTLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\n\nTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\n\nTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\n\n<\/pre>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n    font-size: small;\n    color: black;\n    font-family: consolas, \"Courier New\", courier, monospace;\n    background-color: #ffffff;\n    \/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n    background-color: #f4f4f4;\n    width: 100%;\n    margin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<\/li>\n<\/ul>\n<p>\u6211\u4eec\u518d\u6765\u770b\u521a\u624d\u7684\u767e\u5ea6\u7684\u5730\u5740\uff0c\u7528\u6d4f\u89c8\u5668\u6253\u5f00\u767e\u5ea6\u7684\u5730\u5740\uff0c\u7136\u540e\u70b9\u51fb\u94fe\u63a5\u524d\u9762\u7684\u9501\u56fe\u6807\uff0c\u5982\u56fe\uff1a\n<\/p>\n<p><a href=\"http:\/\/static.oschina.net\/uploads\/space\/2015\/0819\/164414_2pV9_222120.png\"><img decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/space\/2015\/0819\/164414_2pV9_222120.png\"\/><\/a>\n<\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u5b83\u4f7f\u7528\u4e86TLS 1.2\u7248\u672c\u534f\u8bae\uff0c\u7b26\u5408\u7b2c\u4e00\u4e2a\u7ea6\u5b9a\u3002\u7136\u540e\u53ef\u4ee5\u770b\u5230\u4f7f\u7528AES_128_GCM\u8fdb\u884c\u52a0\u5bc6\uff0c\u5e76\u4f7f\u7528ECDHE_RSA\u4f5c\u4e3a\u5bc6\u94a5\u4ea4\u6362\u673a\u5236\u7684\uff0c\u6211\u4eec\u53ef\u4ee5\u5728Forward Secrecy\u7684\u5217\u8868\u4e2d\u627e\u5230\u5bf9\u5e94\u4e24\u6761\u8bb0\u5f55\uff1a<\/p>\n<ul>\n<li>\n<p><code>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384<\/code><\/p>\n<\/li>\n<li>\n<p><code>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u4f46\u662f\u8fd8\u4e0d\u80fd\u786e\u5b9a\u767e\u5ea6\u662f\u5426\u63d0\u4f9bForward Secrecy\uff0c\u6211\u4eec\u518d\u70b9\u5f00\u8bc1\u4e66\u4fe1\u606f\uff0c\u67e5\u770b\u201c\u7b7e\u53d1\u8005\u540d\u79f0\u201d\u548c\u201c\u516c\u5171\u5bc6\u94a5\u4fe1\u606f\u201d\u4e24\u9879\uff0c\u5982\u56fe\uff1a\n<\/p>\n<p><a href=\"http:\/\/static.oschina.net\/uploads\/space\/2015\/0819\/165105_6RyL_222120.png\"><img decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/space\/2015\/0819\/165105_6RyL_222120.png\"\/><\/a>\n<\/p>\n<p>\u770b\u5230\u7b7e\u540d\u7b97\u6cd5\u4e2d\u5199\u7740\u201c\u5e26RSA\u52a0\u5bc6\u7684SHA-1\u201d\u3002\u53ef\u4ee5\u5224\u5b9a\u8be5\u52a0\u5bc6\u7b97\u6cd5\u4e0d\u5305\u542b\u5728\u4e0a\u9762\u4e24\u9879\u4e2d\u3002\u56e0\u6b64\u767e\u5ea6\u662f\u4e00\u4e2a\u4e0d\u7b26\u5408ATS\u7684\u8981\u6c42\uff0c\u6240\u4ee5\u8fd4\u56de\u4e86\u9519\u8bef\u3002\u8fd9\u65f6\u5019\uff0c\u5982\u679c\u8981\u89e3\u51b3\u8fd9\u6837\u7684\u95ee\u9898\uff0c\u540c\u6837\u9700\u8981\u5bf9ATS\u8fdb\u884c\u914d\u7f6e\u3002\u914d\u7f6e\u5982\u4e0b\uff1a<\/p>\n<pre class=\"csharpcode\"><span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>NSAppTransportSecurity<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>NSExceptionDomains<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>baidu.com<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>NSIncludesSubdomains<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">true<\/span><span class=\"kwrd\">\/&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>NSExceptionRequiresForwardSecrecy<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">false<\/span><span class=\"kwrd\">\/&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>NSExceptionAllowsInsecureHTTPLoads<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">key<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;<\/span><span class=\"html\">true<\/span><span class=\"kwrd\">\/&gt;<\/span>\n<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span>\n<span class=\"kwrd\">&lt;\/<\/span><span class=\"html\">dict<\/span><span class=\"kwrd\">&gt;<\/span><\/pre>\n<p><style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n    font-size: small;\n    color: black;\n    font-family: consolas, \"Courier New\", courier, monospace;\n    background-color: #ffffff;\n    \/<em>white-space: pre;<\/em>\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n    background-color: #f4f4f4;\n    width: 100%;\n    margin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<\/p>\n<p>\u5176\u4e2dNSIncludesSubdomains\u8bbe\u7f6e\u4e3aYES\u8868\u793a\u767e\u5ea6\u7684\u5b50\u7ea7\u57df\u540d\u90fd\u4f7f\u7528\u76f8\u540c\u8bbe\u7f6e\u3002NSExceptionRequiresForwardSecrecy\u4e3aNO\u7531\u4e8e\u767e\u5ea6\u4e0d\u652f\u6301ForwardSecrecy\uff0c\u56e0\u6b64\u5c4f\u853d\u6389\u6539\u529f\u80fd\u3002\u6700\u540eNSExceptionAllowInsecureHTTPLoads\u8bbe\u7f6e\u4e3aYES\uff0c\u5219\u8868\u793a\u5141\u8bb8\u8bbf\u95ee\u6ca1\u6709\u8bc1\u4e66\u6216\u8005\u662f\u81ea\u7b7e\u540d\u3001\u8fc7\u671f\u3001\u4e3b\u673a\u540d\u4e0d\u5339\u914d\u7684\u8bc1\u4e66\u5f15\u53d1\u7684\u9519\u8bef\u7684\u57df\u540d\uff08\u8fd9\u91cc\u68c0\u67e5\u8fc7\u767e\u5ea6\u7684\u8bc1\u4e66\u8c8c\u4f3c\u6ca1\u6709\u4ec0\u4e48\u95ee\u9898\uff0c\u4f46\u662f\u8fd8\u662f\u9700\u8981\u8bbe\u7f6e\u6b64\u9879\u624d\u5141\u8bb8\u8bbf\u95ee\uff09\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>iOS9\u4e2d\u65b0\u589eApp Transport Security\uff08\u7b80\u79f0ATS\uff09\u7279\u6027, \u4e3b\u8981\u4f7f\u5230\u539f\u6765\u8bf7\u6c42\u7684\u65f6\u5019\u7528\u5230\u7684H &hellip; <a href=\"https:\/\/www.fh1986.com\/index.php\/archives\/464.html\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u5173\u4e8eiOS9\u4e2d\u7684App Transport Security\u76f8\u5173\u8bf4\u660e\u53ca\u9002\u914d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/posts\/464"}],"collection":[{"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":0,"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/posts\/464\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/media?parent=464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/categories?post=464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fh1986.com\/index.php\/wp-json\/wp\/v2\/tags?post=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}