POST请求不在Ionic2 App中的IOS上工作

时间:2022-03-28 18:44:02

I'm having an issue with HTTP requests. Everything is working fine in Ionic View, browser and Android, but not working on IOS. GET requests are working fine on IOS also. Any guesses, what can that be?

我遇到了HTTP请求的问题。在Ionic View,浏览器和Android中一切正常,但不适用于IOS。 GET请求也适用于IOS。任何猜测,这可能是什么?

I can provide you with more information, just tell me what info do you need. Here's what I have in my package.json:

我可以为您提供更多信息,告诉我您需要哪些信息。这是我在package.json中的内容:

"dependencies": {
    "@angular/common": "2.2.1",
    "@angular/compiler": "2.2.1",
    "@angular/compiler-cli": "2.2.1",
    "@angular/core": "2.2.1",
    "@angular/forms": "2.2.1",
    "@angular/http": "2.2.1",
    "@angular/platform-browser": "2.2.1",
    "@angular/platform-browser-dynamic": "2.2.1",
    "@angular/platform-server": "2.2.1",
    "@ionic/cloud-angular": "0.7.0",
    "@ionic/storage": "1.1.7",
    "@types/moment-timezone": "0.2.32",
    "ionic-angular": "2.0.0-rc.4",
    "ionic-native": "2.4.1",
    "ionicons": "3.0.0",
    "moment": "2.15.1",
    "moment-timezone": "0.5.7",
    "ng2-translate": "5.0.0",
    "rxjs": "^5.0.0-beta.12",
    "zone.js": "0.6.26"
  },
  "devDependencies": {
    "@ionic/app-scripts": "^1.0.0",
    "sw-toolbox": "^3.4.0",
    "typescript": "2.0.9"
  },

The backend receives blank body of a post request. Here's what I get back:

后端接收帖子请求的空白主体。这是我得到的回报:

ERROR: {"_body":"{\"error\":\"Sign up error\",\"message\":{\"first_name\":[\"First Name cannot be blank.\"],\"last_name\":[\"Last Name cannot be blank.\"],\"email\":[\"Email cannot be blank.\"],\"device_id\":[\"Device Id cannot be blank.\"]}}","status":422,"ok":false,"statusText":"Bad Request","headers":{"Content-Type":["application/json; charset=UTF-8"],"Pragma":["no-cache"]},"type":2,"url":"http://app.EDITED"}

Feel free to ask anything and thank you for your help!

随意提出任何问题,谢谢你的帮助!

UPDATE: We moved our backend to HTTPS and now everything is working fine :)

更新:我们将后端移至HTTPS,现在一切正常:)

1 个解决方案

#1


2  

The official answer seems to be here:

官方答案似乎在这里:

https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

Apple simply decided to enforce the use of HTTPS. I suspect Cordova / Ionic are simply not handling this well at the moment (aka no error is thrown, it's not documented etc.)

Apple只是决定强制使用HTTPS。我怀疑Cordova / Ionic目前根本没有处理好这个问题(也就是说没有错误,没有记录等等)

Keep in mind that the safari inspector will show that data is being sent to the server - that is not correct all data sent is removed (entire body) in the iOS app (I lost a day on this).

请记住,safari检查员将显示数据正在发送到服务器 - 这是不正确的所有数据发送被删除(整个身体)在iOS应用程序(我失去了一天)。

As Dmytro Garastovych mentioned, the correct (and only) solution is to move to HTTPS

正如Dmytro Garastovych所提到的,正确的(也是唯一的)解决方案是转向HTTPS

#1


2  

The official answer seems to be here:

官方答案似乎在这里:

https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

Apple simply decided to enforce the use of HTTPS. I suspect Cordova / Ionic are simply not handling this well at the moment (aka no error is thrown, it's not documented etc.)

Apple只是决定强制使用HTTPS。我怀疑Cordova / Ionic目前根本没有处理好这个问题(也就是说没有错误,没有记录等等)

Keep in mind that the safari inspector will show that data is being sent to the server - that is not correct all data sent is removed (entire body) in the iOS app (I lost a day on this).

请记住,safari检查员将显示数据正在发送到服务器 - 这是不正确的所有数据发送被删除(整个身体)在iOS应用程序(我失去了一天)。

As Dmytro Garastovych mentioned, the correct (and only) solution is to move to HTTPS

正如Dmytro Garastovych所提到的,正确的(也是唯一的)解决方案是转向HTTPS