我有一个Ionic 2
应用程序,该应用程序调用Spring Boot
API来向其他设备发送推送通知。该API已配置为HTTPS。
该API POST
请求适用于 除以外的 所有内容iOS
。
我在服务器上的SSL证书是自签名的(也许就是这样)。
适用于:
这是请求:
public sendNotificationRequest(title: string, action: string, name: string, tokens: any, notifications: boolean) {
// Check if user turned off notifications
if(!notifications) {
return;
}
let headers = new Headers({'Content-Type': 'application/json'});
headers.append('Authorization', 'Basic ' + btoa(this.username_decrypted + ':' + this.password_decrypted));
let body = this.formObj(tokens, title, action, name);
console.log(body);
this.http.post("https://<some-url>",
body, { headers: headers }
).subscribe((response) => {
console.log("HTTPS RESPONSE");
console.log(response);
}, function(error) {
console.log("HTTPS ERROR");
console.log(error);
});
}
标头响应如下:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
并且收到此错误:
{
"_body":
{"isTrusted":true},
"status":0,"ok":false,
"statusText":"",
"headers":{},
"type":3,
"url":null
}
Spring Boot API:
@CrossOrigin
@RequestMapping(value="/notifications", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE, produces=MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<NotificationParent> sendNotifications(@RequestBody NotificationParent objs) {
...
return new ResponseEntity<NotificationParent>(objs, HttpStatus.OK);
}
我假设它是一个iOS安全问题,但我不知道。
我认为您的假设是正确的-
iOS安全问题。在iOS中,有一种称为“应用程序传输安全性”的应用程序,默认情况下不允许通过HTTP进行连接以及使用自签名证书进行连接。
您必须添加
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
到Info.plist
您项目的,以允许您的自签名流量。
http://blog.ionic.io/preparing-for-ios-9/
https://gist.github.com/mlynch/284699d676fe9ed0abfa
https://developer.apple.com/library/prerelease/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33
这段代码在几个月内运行良好: 但上周,react native抛出了一个错误“网络请求失败”。我确信我们的API正在工作,因为我已经在一些在线API测试仪上测试过了。 当我没有强制使用HTTPS,只有HTTP时,它就工作了。 我们当前的反应版本是:0.41 以下是错误:
我正在尝试设置邮递员预请求,以便在向服务发出每个请求之前获取 OAuth 令牌。 我尝试遵循与此相关的各种示例和指南,每个示例和指南似乎都非常简单,尽管由于预请求脚本失败,我的脚本仍然存在问题。 恐怕这在某种程度上与这样一个事实有关,即我需要调用的endpoint来获取令牌是在超文本传输协议上,而不是在https上,因为在Postman控制台中,我总是收到对同一个url的两个单独的请求,一个在ht
问题内容: 我遇到了一个非常奇怪的错误,该错误与google.com的SSL和python有关(或更普遍地说,我认为具有多个证书链的域)。每当我尝试向其发送请求时,都会出现以下错误: 我经历了很多次尝试来使此工作正常进行,并且由于我不知道该怎么办而不得不将其发布到Stack Overflow。这是我尝试过的: 注意,该日期返回的时间比实时时间晚2分钟(可能会使我的证书无效)。我修复了这个问题,假设
问题内容: 我在python3.4上有一个脚本,直到我从其下载文件的网站决定使用https时,它一直很好,现在出现错误,但无法弄清楚如何检索该文件。 我的脚本导入以下库,并使用urlretrive先前获取文件。由于现在已通过302重定向转发到https。我遇到一些错误。 我的错误: 问题答案: 您的Python安装或操作系统很可能已损坏。 如果仅使用HTTPS支持进行编译,则Python仅支持HT
如果我使用馈送,例如: 它工作得很好。但是,当我使用https馈送时,如下所示: 这给我一个错误: 未找到https协议,请在启用openssl、gnutls或securetransport的情况下重新编译FFmpeg。https://s3-us-west-2.amazonaws.com/bucket/check.mp4: 找不到协议 我应该如何启用https?
问题内容: 我正在关注Django 1.3 Web开发。对于登录,我收到以下错误 这是我的settings.py随附的APPS。这正是书上所说的样子。 这本书说,它应该包含django.contrib.auth.views.login ..并且我将其包含在 和我的registration / login.html …复制自本书的副本。它应该做。 问题答案: 你需要将模板标记添加为Django模板中
我正在尝试从mocky接收一些简单的json。 反应本机提取函数: 远程调试器出错
通常用于HTTP/HTTPS请求失败/成功等处理. 进程: 主进程 IncomingMessage是由 EventEmitter响应可读流接口 实例事件 事件: 'data' 用途:响应或回调传送到应用的数据 chunk Buffer - 响应正文的数据块. 事件: 'end' 触发:响应正文已结束时 事件: 'aborted' 触发:正在进行的HTTP事务期间请求已取消时 事件: 'error