跨域请求间歇性 ERR_SSL_PROTOCOL_ERROR 错误

Intermittent ERR_SSL_PROTOCOL_ERROR error for cross domain request

我网站的用户在向 api.flickr.com

发出跨域请求时看到断断续续的 ERR_SSL_PROTOCOL_ERROR

我所说的间歇​​性是指我昨天在 api 的约 1200 个请求中看到这种情况发生了 4 次。

Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR     https://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=.....

我的网站是 AngularJS 应用程序 运行 Google App Engine 并且在 HTTPS 上是独家可用的。

sslchecker shows that my site's certificate & certificate chain 已正确安装。嗯,我觉得还行!

sslchecker for api.flickr.com 表示缺少证书链的 ROOT 1。那是问题所在吗?我有什么解决办法吗?

还有其他想法吗?难不成我们的证书是不同权威机构签发的问题?

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

这可能是答案,但我猜这可能不是客户端问题,所以我建议您更新 api 的服务器,在 [=16] 中添加该行=]:

Access-Control-Allow-Origin: https://api.flickr.com/*

这应该可以解决您的一些用户面临的问题。

持久性SSL协议错误可能是由

等问题引起的
  • 目标服务器需要不同的协议(例如 SSLv1、SSLv2、SSLv3)

  • 违反安全策略(例如,某些服务器不接受来自客户端的证书请求)

  • 防火墙阻抗过滤/加密


间歇性 SSL 协议错误 很难诊断。它们可能是会话过期、密钥过期、连接中断、数据包丢失等的结果

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

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


Flickr2014 年 6 月 27 日将他们的 API 切换为仅 SSL(不到一年)。从那时起,他们的论坛就因 SSL 相关问题而爆炸。

在过去的几个月里,许多用户报告了(check thread)个零星的 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");
                });
        }
    });

如果继续得到"Protocol Error",则通知用户Flickr暂时不可用,稍后再试。

如果您 运行 遇到此错误并且您正在测试本地主机端点,请确保您使用 http 而不是 https 作为您的 url.

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