Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NativeScript Angular Cleartext HTTP traffic to localhost not permitted

I am working with angular version of native script and trying to create a login system to my network.
Below is my code that attempts to log into the network.

home.component.ts

 import { LoginService } from '../Services/login/login.service';
 export class LoginComponent implements OnInit {

 public user: User;
 loginForm: FormGroup;

 constructor(private router: Router,
     private userService: UserService,
     private page: Page,
     public  loginDetails: LoginDetails,
     private LoginService: LoginService

 ) {

     this.user = new User();
     this.user.email = "[email protected]";
     this.user.password = "pass123";
     this.user.logo = "~/Images/opos_logo.png";
 }

 submit() {

    /* set a user variable with data from the formGroup */
    const user: string = this.user.email;
    /* set a password variable with data from the formGroup */
    const password: string = this.user.password;

    this.LoginService.loginUser(user, password)
        .subscribe(data => this.checkUser(data));
 }
}

Services/login/login.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from "@angular/core";
import { Jwt } from '../../Classes/jwt';


@Injectable({
    providedIn: 'root'
})
export class LoginService {


  loginUrl = 'http://localhost/Login.w';

  constructor(private _http: HttpClient) { }

  loginUser(user, pass) {
      return this._http.get<Jwt>(
          this.loginUrl, { params: { fi_user: user, fi_pass: pass } });
  }
}

When I tried to run my app like this I would get the following error:

"originalStack": "Error: java.io.IOException: Cleartext HTTP traffic to localhost not permitted\n at new ZoneAwareError (file:///data/data/org.nativescript.preview/files/app/tns_modules/@nativescript/angular/zone-js/dist/zone-nativescript.js:1298:31)\n at onRequestComplete (file:///data/data/org.nativescript.preview/files/app/tns_modules/@nativescript/core/http/http-request/http-request.js:54:30)\n at Object.onComplete (file:///data/data/org.nativescript.preview/files/app/tns_modules/@nativescript/core/http/http-request/http-request.js:43:7)"

To tried to fix the issue by following the suggestions on the post Android 8: Cleartext HTTP traffic not permitted and followed the advice on that post. I added a androidmanifest.xml file to my program (this was not already part of the application as such I am not sure if the application is accessing the file) on the path /App_Resources/Android/AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="__PACKAGE__"
android:versionCode="1"
android:versionName="1.0">

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"/>

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="__APILEVEL__"/>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:name="com.tns.NativeScriptApplication"
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:networkSecurityConfig="@xml/network_security_config">

    <activity
        android:name="com.tns.NativeScriptActivity"
        android:label="@string/title_activity_kimera"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:theme="@style/LaunchScreenTheme">

        <meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" />

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.tns.ErrorReportActivity"/>
</application>

I also added a network_security_config.xml file which the Stack overflow post was suggesting to the path res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
   <domain-config cleartextTrafficPermitted="true">
      <domain includeSubdomains="true">domain.com (to be adjusted)</domain>
   </domain-config>
</network-security-config>

I also tried to add the application android:usesCleartextTraffic="true" tag to my home.component.html to fix the error but this did not resolve the issue.

like image 930
M.Cairns Avatar asked Jan 17 '26 11:01

M.Cairns


1 Answers

Try with:

loginUrl = 'http://10.0.2.2/Login.w';

I just have read article: https://stackoverflow.com/a/48591525 @EdwardGarson wrote:

From the emulator, localhost or 127.0.0.1 refers to the emulator itself, not your local machine. You need to use ip 10.0.2.2, which is bridged to your local machine.

Greetings

like image 66
Israel Estrada Avatar answered Jan 20 '26 01:01

Israel Estrada



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!