[英]Intermittent ERR_SSL_PROTOCOL_ERROR error for cross domain request
我网站的用户在向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=.....
我的站点是运行在 Google App Engine 上的 AngularJS 应用程序,并且在 HTTPS 上是独家可用的。
sslchecker 显示我站点的证书和证书链已正确安装。 嗯,我觉得还行!
api.flickr.com 的api.flickr.com
显示证书链的ROOT 1
丢失。 那是问题所在吗? 我有什么办法吗?
还有其他想法吗? 我们的证书可能是由不同机构颁发的问题吗?
编辑 -从谷歌分析中收集的一些其他可能相关的信息
持久性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");
});
}
});
如果您继续收到“协议错误” ,则通知用户 Flickr 暂时不可用并稍后重试。
如果遇到此错误并且正在测试本地主机端点,请确保使用http
而不是https
作为 url。
例如: http://localhost:8080/
不是https://localhost:8080/
这可能是答案,但我猜这可能不是客户端问题,所以我建议你更新你的 api 的服务器,并在标题中添加该行:
Access-Control-Allow-Origin: https://api.flickr.com/*
这应该可以解决您的一些用户面临的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.