跨域请求的间歇性ERR_SSL_PROTOCOL_ERROR错误

Har*_*ime 22 javascript ssl https google-app-engine angularjs

我的网站用户ERR_SSL_PROTOCOL_ERROR在发出跨域请求时会看到间歇性的api.flickr.com

间歇性地我的意思是我已经看到这种情况发生在昨天对于api的~1200个请求中的4次.

Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR     https://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=.....
Run Code Online (Sandbox Code Playgroud)

我的网站是在Google App Engine上运行的AngularJS应用程序,并且在HTTPS上可以使用exclusivley.

sslchecker显示我的网站的证书和证书链已正确安装.好吧,我觉得它看起来还不错!

sslchecker用于api.flickr.com显示ROOT 1证书链的缺失.那是问题吗?对我来说有什么方法吗?

还有其他想法吗?问题是我们的证书可能是由不同的权威机构发出的吗?

编辑 -从谷歌分析中收集的其他一些可能相关的信息

  • 已经看到它发生在不同的操作系统 - Android,iOS,Windows
  • 不同的浏览器 - Android,Chrome,Safari
  • 不同的网络域

Dav*_*ich 16

持久性SSL协议错误可能是由类似的问题引起的

  • 目标服务器需要不同的协议(例如SSLv1,SSLv2,SSLv3)

  • 违反安全策略(例如某些服务器不遵守客户提出的证书请求)

  • 防火墙阻抗过滤/加密


间歇性SSL协议错误很难诊断.它们可能是过期会话,过期密钥,连接打嗝,丢包等的结果

更糟糕的是,它们可能是由服务器端问题引起的,例如日期时间同步,服务器连接池已满等.

最佳做法是重新发送请求:因为此类问题通常是暂时的故障,并且通常在第二次尝试时成功.


Flickr 2014 6月27日将其API改为SSL(略低于一年).自那时起,他们的论坛已经解决了与SSL相关的问题.

在过去几个月中,许多用户报告(检查线程)偶发的SSL协议错误.

这些协议错误出现在所有设备类型(笔记本电脑,台式机,移动设备,Linux,Windows等)中,通常立即重试是成功的.这些问题的共性和非常罕见的性质表明主机端存在一些与客户端上的任何内容完全无关的问题.

由于重新尝试或第二次尝试通常是成功的,我建议捕获错误,并再尝试1-3次:

var promise = flickrService.get(...);

promise.success(function (data, status, headers, config) {
        // Big Party
    })
    .error(function(data, status, headers, config) {
        if (status == 107) {
            promise = flickrService.get(...);

            promise.success(function (data, status, headers, config) {
                    // Big Party
                })
                .error(function (data, status, headers, config) {
                    AlertService.RaiseErrorAlert("Flickr temporarily unavailable.Please try again later");
                });
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果您继续收到"协议错误",则通知用户Flickr暂时不可用,稍后再试.


小智 5

如果您遇到此错误并且正在测试 localhost 端点,只需确保您使用http而不是作为https您的 url。

例如:http://localhost:8080/https://localhost:8080/