所以我遇到了一个可能是典型问题的问题,尽管这里和这里似乎有几个相关的问题和答案,但它们并不完全适用于我的问题。
我有一个正在开发中的本地django服务器(localhost:8000)。我想通过使用Nativescript/Vue和Axios进行http调用,轻松开发一个连接到我的django服务器的Nativescript移动应用程序。我更喜欢在ios中开始开发/测试。我有两种使用Nativescript进行开发的选择——要么使用"tns run ios"(在我的mac上打开ios模拟器),要么使用"tns preview"(允许我通过实际的iphone进行测试)。
当我通过axios向http://localhost:8000/myapi该调用产生的http状态结果为null。
- 我尝试使用环回地址(例如10.0.2.2-我认为这可能适用于Android模拟器),但结果相同
-
我试着使用我的mac的本地IP地址,也就是说,使用我的本地192.168.xx.xx地址进行呼叫,而不是localhost,但不起作用
-
我终于能够用它工作了/ngrok通过隧道将本地服务器连接到外部IP地址。现在这是可行的,但并不理想,因为IP地址可能会不时更改。
建议使用Nativescript预览或运行ios模拟器轻松连接到本地api服务器的解决方案是什么?
模拟器API路径:-http://10.0.2.2:5000.就像你的API本地路径是http://198.168.1:5000/api或http://localhost:5000/api然后替换为http://10.0.2.2:5000/api端口地址与您的本地API端口相同。
路径-App_resources/Android/src/main/AndroidManifest.xml:-
android:usesCleartextTraffic="true">添加应用程序标签
iOS文件路径-App_Resources/iOS/Info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>10.0.2.2:5000</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
正如@Manoj所指出的,您需要在此处为ios定义的模拟器设置中允许http。
此外,如果您正在使用django,您还必须执行以下操作:
-
确定您的本地ip地址(通过ifconfig for mac)
-
settings.py中允许的主机包含此IP地址,例如allowed_hosts=[192.168.1414','localhost','127.0.0.1'],其中192.168.14.14是您的本地IP地址
-
您将服务器作为这个ip地址而不是本地主机启动,例如,python manage.py runserver 192.168.14.14:8000
这将适用于模拟器(tns运行ios)和手机上的游乐场(tns预览)