IE8是否不支持HTTPS协议的JSONP请求?求明确结论
Great question—let’s break this down clearly based on your tests and IE8’s known behavior:
Short Answer
Yes, IE8 effectively cannot use JSONP with most modern HTTPS APIs, even though there’s no explicit official statement saying "IE8 doesn’t support HTTPS JSONP." The root issue isn’t JSONP itself, but IE8’s outdated SSL/TLS protocol support and strict security restrictions.
Your Test Breakdown
First, let’s look at your test code (formatted for clarity):
<html> <head> <title>test demo</title> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <script src="http://cdn.bootcss.com/jquery/1.2.3/jquery.js"></script> </head> <body> </body> <script type="text/javascript"> $.ajax({ // url: 'https://randomuser.me/api/?results=5', // IE8 failure // url: 'http://suggestion.baidu.com/su?wd=11&p=3&t=1526957301796', IE8 success // url: 'https://api.ipify.org/?format=jsonp', // IE8 failure url: 'http://api.ipify.org/?format=jsonp', // IE8 succeeded (same API, different protocol) dataType: 'jsonp', type: 'get', // jsonp: "cb", success: function(res){ console.log(res) }, error: function(err){ console.log('err', err) } }) </script> </html>
Your test results align perfectly with IE8’s limitations:
- HTTPS JSONP requests fail: Most modern HTTPS APIs have dropped support for the old SSL/TLS protocols (SSL 3.0, TLS 1.0) that IE8 relies on. Without a valid SSL connection, the JSONP request can’t complete.
- HTTP requests to the same API work: HTTP doesn’t require SSL/TLS negotiation, so IE8 can connect without protocol compatibility issues.
- HTTPS jQuery CDN causes
$ is undefined: Either the CDN no longer supports IE8’s SSL protocols (so the script fails to load), or IE8’s strict mixed-content rules block loading an HTTPS script when your page is served over HTTP (or vice versa).
Why This Happens
IE8 was released in 2009, long before modern security standards became widespread. Key constraints:
- Outdated SSL/TLS support: IE8 only supports SSL 3.0 and TLS 1.0—protocols that are now considered insecure and have been disabled by nearly all major APIs and CDNs.
- Strict mixed-content policies: IE8 blocks cross-protocol resource loading (e.g., loading an HTTPS script on an HTTP page, or making an HTTPS request from an HTTP page) by default.
- No support for modern security features: It lacks support for TLS 1.1/1.2, SNI, and other features required to connect to most modern HTTPS endpoints.
Edge Case Exception
In theory, if you had an HTTPS endpoint that still enabled SSL 3.0/TLS 1.0 and didn’t trigger mixed-content issues, IE8 could make a successful JSONP request. But this is extremely rare today, as maintaining those old protocols poses significant security risks.
Final Verdict
For all practical purposes, IE8 cannot use JSONP with modern HTTPS APIs. The combination of deprecated protocol support and strict security rules makes these requests fail almost universally.
内容的提问来源于stack exchange,提问作者chen爱国

