ඇන්ඩ්‍රොයිඩ් 8: ක්ලියර්ටෙක්ස්ට් HTTP ගමනාගමනය අවසර නැත


1107

මගේ යෙදුම (පසු-අන්ත පෝෂණය භාවිතා කරන) අන්තර්ගතය නොපෙන්වන බවට ඇන්ඩ්‍රොයිඩ් 8 භාවිතා කරන්නන්ගෙන් මට වාර්තා තිබුණි. පරීක්ෂණයෙන් පසුව ඇන්ඩ්‍රොයිඩ් 8 හි ව්‍යතිරේකය සිදුවෙමින් පවතින බව මට පෙනී ගියේය:

08-29 12:03:11.246 11285-11285/ E/: [12:03:11.245, main]: Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted
at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.doConnection(AbstractHttpAsyncTask.java:207)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.extendedDoInBackground(AbstractHttpAsyncTask.java:102)
at com.deiw.android.generic.tasks.AbstractAsyncTask.doInBackground(AbstractAsyncTask.java:88)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)

(මම පැකේජයේ නම, URL සහ වෙනත් හඳුනාගැනීම් ඉවත් කර ඇත)

ඇන්ඩ්‍රොයිඩ් 7 හි සහ පහළ සියල්ල ක්‍රියාත්මක වන විට, මම android:usesCleartextTrafficමැනිෆෙස්ට් හි සැකසෙන්නේ නැත (සහ එය සැකසීම trueඋදව් නොකරයි, එය කෙසේ වෙතත් පෙරනිමි අගය වේ), මම ජාල ආරක්ෂණ තොරතුරු භාවිතා නොකරමි. මා අමතන්නේ නම් NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(), එය නැවත falseඇන්ඩ්‍රොයිඩ් 8 trueසඳහා, පැරණි අනුවාදය සඳහා, එකම APK ගොනුව භාවිතා කරයි. ඇන්ඩ්‍රොයිඩ් ඕ පිළිබඳ ගූගල් තොරතුරු වල මේ ගැන යම් සඳහනක් සොයා ගැනීමට මම උත්සාහ කළ නමුත් එය සාර්ථක නොවීය.


29
මෙම කෝඩ්ලැබ් පරික්ෂා කරන්න නමුත් භාවිතා කරන්නcleartextTrafficPermitted="true"
ArtiomLK

5
මෙය මා නඩත්තු කරන යෙදුමක සිදු වන්නේ සේවාදායකය සමහර අවස්ථාවල HTTPS සිට HTTP වෙත හරවා යවන බැවිනි.
බිග් මැක්ලාර්ජ්හියුජ්

Answers:


2358

අනුව ජාල ආරක්ෂක වින්යාසය -

ඇන්ඩ්‍රොයිඩ් 9 (API මට්ටම 28) සමඟ ආරම්භ කරමින්, පැහැදිලි පා support සහාය පෙරනිමියෙන් අක්‍රිය කර ඇත.

එසේම බලන්න - https://koz.io/android-m-and-the-war-on-cleartext-traffic/

කෝඩ්ලැබ්ස් පැහැදිලි කිරීම - https://codelabs.developers.google.com/codelabs/android-network-security-config/index.html

විකල්ප 1 -

පළමුව "http: //" වෙනුවට "https: //" සමඟ URL ය එබීමට උත්සාහ කරන්න.

විකල්ප 2 -

ගොනුව res / xml / network_security_config.xml සාදන්න -

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

AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
        ...
    </application>
</manifest>

විකල්ප 3 -

android: useCleartextTraffic Doc

AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>

ද ලෙස @ david.s 'පිළිතුර පෙන්වා android:targetSandboxVersionද ප්රශ්නයක් විය හැකිය -

මැනිෆෙස්ට් ඩොක්ස් වලට අනුව -

android:targetSandboxVersion

මෙම යෙදුම භාවිතා කිරීම සඳහා ඉලක්කගත වැලිපිල්ල. සෑන්ඩ්බොක්ස් අනුවාද අංකය වැඩි වන තරමට ආරක්‍ෂිත මට්ටම ඉහළ යයි. එහි පෙරනිමි අගය 1; ඔබට එය 2 ලෙසද සැකසිය හැක. මෙම ගුණාංගය 2 ට සැකසීම යෙදුම වෙනත් SELinux සෑන්ඩ්බොක්ස් වෙත මාරු කරයි. 2 වන මට්ටමේ වැලිපිල්ලකට පහත සඳහන් සීමාවන් අදාළ වේ:

  • usesCleartextTrafficජාල ආරක්ෂණ වින්‍යාසයේ පෙරනිමි අගය සාවද්‍ය ය.
  • Uid බෙදා ගැනීමට අවසර නැත.

එබැවින් විකල්ප 4 -

තිබේ නම්, ඔබ android:targetSandboxVersionතුළ <manifest>නම් එය අඩු කර1

AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
    <uses-permission android:name="android.permission.INTERNET" />
    ...
</manifest>

4
@ රිෂිකේෂ් කඩම් ඔබේ පිළිතුර බෙහෙවින් අගය කරන නමුත් මෑතදී නිකුත් කළ පී හි තවත් පියවරක් තිබිය යුතු බව පෙනේ? කරුණාකර මගේ ප්‍රශ්නය stackoverflow.com/questions/51770323/…
spartygw

8
ClearText HTTP යන්නෙන් අදහස් කරන්නේ ඔවුන් https වෙනුවට http වෙබ් අඩවියක් භාවිතා කළ බවයි?
ටොම් හැමන්ඩ්

4
ඩොමේන්-වින්‍යාසයේ සිට පාදක වින්‍යාසය දක්වා විකල්ප 1 වෙනස් කිරීම මා සඳහා මෙය සවි කර ඇත
ග්‍රෙග්එම්

177
සෑම සංවර්ධකයෙකුම එකතු කිරීමට යන්නේ නම් මෙම ඇන්ඩ්‍රොයිඩ් ආරක්ෂණ විශේෂාංගයේ ඇති වැදගත්කම android:usesCleartextTraffic="true"කුමක්ද?
පළතුරු

71
මෙම ගැටලුවට හොඳම විසඳුම ගැනවත් මෙය සඳහන් නොකරයි: HTTPS භාවිතා කරන්න. මෙම පිළිතුරේ සඳහන් විකල්පයන් අවසාන පියවරක් පමණක් විය යුතුය.
ක්‍රිස්ටියන් බ්‍රග්මන්

139

AndroidManifest හි මට මෙම පරාමිතිය හමු විය:

android:networkSecurityConfig="@xml/network_security_config"

සහ _ xml / network_security_config යනු network_security_config.xml හි අර්ථ දක්වා ඇත්තේ:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!--Set application-wide security config using base-config tag.-->
    <base-config cleartextTrafficPermitted="false"/>
</network-security-config>  

මම cleartextTrafficPermitted සත්‍ය ලෙස වෙනස් කළෙමි


12
+1 වෙනත් පිළිතුරු යෝජනා කර ඇති පරිදි උප කුලකයක් පවත්වා ගැනීමට වඩා යෙදුමේ භාවිතා කරන සියලුම වසම් හරහා එය යෙදීමට ඔබට අවශ්‍ය නම් මෙය ප්‍රයෝජනවත් වේ.
මාටින් මිල

2
පරිපූර්ණයි. වැඩි විස්තර මෙතැනින්: codelabs.developers.google.com/codelabs/…
xxxxxxxxxxxx

1
වෙනස්කම් වලින් පසුව යෙදුම නැවත ස්ථාපනය කරන්න
Ssenyonjo

128

ඇන්ඩ්‍රොයිඩ් 9 හි මගේ ගැටලුව වූයේ http සමඟ වසම් හරහා වෙබ් දර්ශනයක සැරිසැරීමයි. මෙම පිළිතුරෙන් විසඳුම

<application 
    android:networkSecurityConfig="@xml/network_security_config"
    ...>

සහ:

res / xml / network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

1
මෙම පිළිතුර පමණක් මට වැඩ කළේය. වෙනත් පිළිතුරු මට වැඩ කරන්නේ නැත. මෙය හොඳම පිළිතුරයි.
අහමදුල්ලා සයිකාත්

මට කෙසේ හෝ මෙය නැවත ලිවිය gradleහැකිද?
මොරොසොව්

2
විසඳුමක් කිසිවක් මට වැඩ කළේ නැත. මෙය හැර .. !! ස්තූතියි ටොන්.
කුනාල් කක්කඩ්

මෙය නිවැරදි විසඳුමක් වන අතර එය නිවැරදි පිළිතුර ලෙස පිළිගත යුතුය. පැබ්ලෝ සෙගරාට ස්තූතියි.
ස්ටැනොජ්කොවික්

Realyyyyyyyyy නියමයි. බොහොම ස්තූතියි.
Artyom_akeel

96

ඔබට අවශ්‍ය වන්නේ නිදොස්කරණය කිරීමේදී පැහැදිලි පෙළට ඉඩ දීමට පමණි, නමුත් නිෂ්පාදනයේ පැහැදිලි පා text ය ප්‍රතික්ෂේප කිරීමේ ආරක්ෂක ප්‍රතිලාභ තබා ගන්න. මෙය මට ප්‍රයෝජනවත් වන්නේ https සඳහා සහය නොදක්වන සංවර්ධන සේවාදායකයකට එරෙහිව මගේ යෙදුම පරීක්ෂා කරන බැවිනි. නිෂ්පාදනයේදී https බලාත්මක කරන්නේ කෙසේද යන්න මෙන්න, නමුත් නිදොස් කිරීමේ ක්‍රමයේදී පැහැදිලි පා text වලට ඉඩ දෙන්න:

Build.gradle හි:

// Put this in your buildtypes debug section:
manifestPlaceholders = [usesCleartextTraffic:"true"]

// Put this in your buildtypes release section
manifestPlaceholders = [usesCleartextTraffic:"false"]

AndroidManifest.xml හි යෙදුම් ටැගය තුළ

android:usesCleartextTraffic="${usesCleartextTraffic}"

1
එය භාවිතා කරන්නේ api 23+ මත පමණි. ඔබට api ස්වාධීන විසඳුමක් අවශ්‍ය නම් අනුමත කළ ස්ථානය: stackoverflow.com/questions/46302058/… හොඳ විකල්පයකි ...
Rik van Velzen

ප්‍රශ්නය: යෙදුම මඟින් http හෝ https විය හැකි වෙබ් සේවාදායකයන් භාවිතා කරන විට, ක්ලෙයාර්ටෙක්ස්ට්‍රැෆික් භාවිතා කරයි: http යූආර්එල් වෙබ් සේවා භාවිතා කිරීමට අවශ්‍ය වුවද “අසත්‍යය” වැදගත්ද? එබැවින් එය සත්‍ය ලෙස සැකසීමෙන් අදහස් වන්නේ https සේවාවන් පෙරනිමියෙන් පැහැදිලි පෙළක් නොයවන බවයි.
ඇයිඕස්

2
ස්තූතියි මචං! එය පිළිගත් පිළිතුර විය යුතුය. එය ක්‍රියාත්මක කිරීම සඳහා කළ යුතු ආරක්ෂිතම දේ
dm707

62

ඔබේ URL හි සිට වෙනස් HTTPකිරීමටHTTPS ;

ඒක ක්‍රියාත්මක වෙනවා !!!


102
මෙය ඉහළට ඔසවා තබන්නේ කෙසේද? ඔබේ සේවාදායක යූආර්එල් https නොවේ නම් ඔබට අත්
සේදීමේ

18
ඉහළට ඔසවා තැබීම (නිෂ්පාදන පරිසරයන් තුළ) කළ යුතු නිවැරදි දෙය නිසා. HTTPS පෙරනිමිය විය යුතුය, HTTP නොවේ.
බීට්ස්ට්‍රා

30
etbeetsta අන්තර්ගතයට සේවය කරන්නේ කුමක් ද යන්න පිළිබඳව ඔබට පූර්ණ පාලනයක් ඇතැයි ඔබ උපකල්පනය කරයි. එබැවින් මෙම පිළිතුර බොළඳ හෝ අශෝභන ස්වභාවයකි.
මාටින් මිල

11
@beetstra නිදොස්කරණය කිරීමේදී LOCAL යන්ත්‍රයක HTTPS පෙරනිමි විය යුත්තේ ඇයි? මෙය එතරම් මෝඩකමකි, ගූගල් පීතෘමූලිකවාදයේ තවත් උදාහරණයක් පමණි. වාසනාවකට කෙනෙකුට ටයිලර්ගේ විසඳුම මඟින් නිදොස් කිරීමේ මාදිලිය සඳහා මෙය විසඳා ගත හැකිය.
බෙවෝර්

4
පිළිතුර නොදැන සිටීමයි. කුඩා සමාගම්වල පුද්ගලයින් මෙන් නොව, සමහර විට ඔබට සෑම වේදිකා සේවාදායකයක් සඳහාම SSL නොමැත. යමෙකු ෆේස්බුක් සටහනක ව්‍යාකරණ නිවැරදි කරන තරමටම පිළිතුර නරක ය, මෙය කිසිසේත්ම ප්‍රශ්නයට පිළිතුරු නොදෙන අතර එය නිවැරදි නොකරයි.
නික් ටර්නර්

42
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">***Your URL(ex: 127.0.0.1)***</domain>
    </domain-config>
</network-security-config>

ඉහත දක්වා ඇති යෝජනාවේදී මම මගේ URL එක http://xyz.abc.com/mno/

මම එය xyz.abc.com ලෙස වෙනස් කළ අතර පසුව එය ක්‍රියාත්මක වීමට පටන් ගත්තේය.


8
වසම! = URL. "http" යනු ප්‍රොටෝකෝලයයි. ප්‍රොටෝකෝලය කිසි විටෙකත් වසමේ කොටසක් නොවේ.
ඇදහිය නොහැකි ජනවාරි

හොඳම පිළිතුර., ස්තූතියි ඩොමේන් විශේෂිත
වින්‍යාසය

මෙය නිවැරදිය, එහි සහාය දක්වන්නේ FQDN පමණි, IP ලිපින නොමැත (ඉහත එය සවි කර ඇත).
මාටින් සයිට්ලර්

වසම 10.0.2.2 සඳහා ක්‍රියා නොකරයි. මම වරාය අංකය එකතු කළ යුතුද?
Ssenyonjo

29

හරි, එය ⇒⇒ නොවේ thousands දහස් ගණනක් එය ඔබේ ප්‍රතිපත්ති ප්‍රකාශනයට එක් කිරීම පුනරාවර්තනයකි , නමුත් මෙය පදනම් කරගත් ඉඟියක්, නමුත් ඔබට අමතර ප්‍රතිලාභයක් ලබා දෙයි (සමහර විට පසුබිම් තොරතුරු).

ඇන්ඩ්‍රොයිඩ් සතුව src-Directory සඳහා නැවත ලිවීමේ ක්‍රියාකාරිත්වයක් ඇත.

පෙරනිමියෙන්, ඔබට තිබේ

/ app / src / main

නමුත් ඔබේ AndroidManifest.xml නැවත ලිවීමට අමතර ඩිරෙක්ටරි එකතු කළ හැකිය. එය ක්‍රියාත්මක වන ආකාරය මෙන්න:

  • නාමාවලිය / යෙදුම / src / නිදොස්කරණය සාදන්න
  • ඇතුළත AndroidManifest.xml සාදන්න

මෙම ගොනුවේ ඇතුළත, ඔබට සියලු රීති ඇතුලත් කිරීමට අවශ්‍ය නැත , නමුත් ඔබගේ / යෙදුම / src / main / AndroidManifest.xml වෙතින් නැවත ලිවීමට ඔබ කැමති ඒවා පමණි.

ඉල්ලූ CLEARTEXT- අවසරය සඳහා එය පෙනෙන්නේ කෙසේද යන්න පිළිබඳ උදාහරණයක් මෙන්න:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.yourappname">

    <application
            android:usesCleartextTraffic="true"
            android:name=".MainApplication"
            android:label="@string/app_name"
            android:icon="@mipmap/ic_launcher"
            android:allowBackup="false"
            android:theme="@style/AppTheme">
    </application>

</manifest>

මෙම දැනුමෙන් ඔබගේ නිදොස්කරණය මත පදනම්ව ඔබගේ අවසරයන් අධික ලෙස පැටවීම 1,2,3 ක් ලෙස දැන් පහසුය | ප්‍රධාන | Enviroment නිදහස් කරන්න .

එයින් ලැබෙන විශාල වාසිය ... ඔබේ නිෂ්පාදනයේ දෝශ නිරාකරණ දේවල් නොමැති අතර මැනිෆෙස්ට් ඔබ සෘජු හා පහසුවෙන් නඩත්තු කළ හැකි ව්‍යුහයක් තබා ගනී


3
මෙය අනිවාර්යයෙන්ම නිසි විසඳුමයි. ඇන්ඩ්‍රොයිඩ් මෙම ආරක්ෂක සැකසුම් එක් හේතුවක් සඳහා එකතු කර ඇති බැවින් ඒවා නැගී සිටිය යුතුය. ඔබේ විසඳුම් මඟින් දේශීය අනාරක්ෂිත පරිසරයන් පරීක්ෂා කිරීමට අපට ඉඩ ලබා දෙන අතර නිෂ්පාදන ගොඩනැඟිලිවල තවමත් නිර්දේශිත ආරක්ෂක සැකසුම් ඇත. ඔබට ස්තුතියි!
කූ

25

එය යමෙකුට ප්‍රයෝජනවත් විය හැකිය.

අපට මෑතකදී ඇන්ඩ්‍රොයිඩ් 9 සඳහා එකම ප්‍රශ්නයක් තිබුනි, නමුත් අපට අවශ්‍ය වූයේ වෙබ් වීව් තුළ යූආර්එල් කිහිපයක් ප්‍රදර්ශනය කිරීම පමණි. එබැවින් android:usesCleartextTraffic="true"මැනිෆෙස්ට් වෙත එකතු කිරීම සාර්ථක විය, නමුත් මේ සඳහා සමස්ත යෙදුමේ ආරක්ෂාව අඩාල කිරීමට අපට අවශ්‍ය නොවීය. ඒ නිසා නිවැරදි කිරීම වූයේ සබැඳි සිට සබැඳිය වෙනස් httpකිරීමයිhttps


3
මට URL කිහිපයක් පමණක් පෙන්වීමට අවශ්‍ය නම් මට වෙබ් දර්ශනයක් අවශ්‍ය නොවේ. මම පෙළ දර්ශනයක් භාවිතා කරමි. ;) මම හිතන්නේ ඔබ අදහස් කළේ ඔබ HTML පිටු කිහිපයක් පෙන්වන බවයි. ඔබගේ නිවැරදි කිරීම ක්‍රියාත්මක වන්නේ ඔබේ සේවාදායකය SSL ලබා දෙන්නේ නම් පමණි. ඔබට හුදෙක් සබැඳි වෙනස් කළ නොහැක.
ඇදහිය නොහැකි ජනවාරි

2
හැකි සෑම විටම මෙය හොඳම විකල්පය බව සහතිකයි, නමුත් යමෙකුට එය සැමවිටම තෝරා ගත නොහැක - එක්කෝ කාර්ය සාධන හේතුවක් නිසා හෝ සරලවම සම්පත පැහැදිලි පෙළ HTTP හි නොතිබිය හැකි බැවිනි.
ඩකාටින්

"සමස්ත යෙදුමේ ආරක්ෂාව අඩාල කිරීමට අපට අවශ්‍ය නොවීය", එයින් ඇතිවිය හැකි ආරක්ෂක අවදානම් මොනවාද? මගේ නඩුවේ එක් URL එකක් නොමැති බැවින් මට ඒවා මැනිෆෙස්ටයේ එක් කළ නොහැක.
රොබට් විලියම්ස්

හායි ob රොබට් විලියම්ස් එයින් අදහස් කරන්නේ පැහැදිලි ගමනාගමනය සංකේතාංකනය නොකළ ගමනාගමනයට ඉඩ දෙනු ඇති බවයි. මෙන්න බ්ලොග් පෝස්ට් media.com/@son.rommer/…
sparkly_frog

නැවතත් එම ප්‍රශ්නයම සිදුවිය. එම විසඳුම් සියල්ලම උත්සාහ කළා.
අහමදුල්ලා සයිකාත්

22

දේශීය ව්‍යාපෘති සඳහා ප්‍රතික්‍රියා කරන්න

එය දැනටමත් RN 0.59 මත සවි කර ඇත. ඔබ සොයා ගත හැකි 0.58.6 සිට 0,59 කිරීමට උත්ශ්රේණි කිරීම වෙනස ඔබ රයිට්ස් නව් ආයතනයේ versionust පියවර පහත අනුගමනය දියුණු තොරව එය කළ හැකි:

ගොනු සාදන්න:

android / app / src / debug /res/xml/react_native_config.xml -

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="false">localhost</domain>
    <domain includeSubdomains="false">10.0.2.2</domain>
    <domain includeSubdomains="false">10.0.3.2</domain>
  </domain-config>
</network-security-config>

android / app / src / debug /AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools">

  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

  <application tools:targetApi="28"
      tools:ignore="GoogleAppIndexingWarning" 
      android:networkSecurityConfig="@xml/react_native_config" />
</manifest>

මූල හේතුව දැන ගැනීමට පිළිගත් පිළිතුර පරීක්ෂා කරන්න.


2
මම ප්‍රතික්‍රියා-ස්වදේශීය 0.59.5 භාවිතා කරන අතර මට එකම ගැටලුවක් තිබේ නම්, ඔබ යෝජනා කරන පරිදි අපි අතින් AndroidManifest.xml සැකසිය යුතුය.
ක්‍රිස්ටියන් මෝරා

11

හරි, මම මේක හොයාගත්තා. මැනිෆෙස්ට් පරාමිතිය නිසා android:targetSandboxVersion="2", මා සතුව ඇත්තේ ක්ෂණික යෙදුම් අනුවාදයක් ඇති නිසාය - එය පරිශීලක ක්ෂණික යෙදුමෙන් සාමාන්‍ය යෙදුමකට යාවත්කාලීන කිරීමට වඩා වරක් වග බලා ගත යුතුය, ඔහු මාරුව සමඟ ඔහුගේ දත්ත ලිහිල් නොකරනු ඇත. කෙසේ වෙතත් නොපැහැදිලි විස්තරය යෝජනා කරන පරිදි:

මෙම යෙදුමට භාවිතා කිරීමට අවශ්‍ය ඉලක්ක වැලිපිල්ල නියම කරයි. ඉහළ සැන්බොක්ස් අනුවාදවල වැඩි ආරක්‍ෂිත මට්ටම් ඇත.

මෙම ගුණාංගයේ පෙරනිමි අගය 1 වේ.

එය පැහැදිලිවම අවම වශයෙන් ඇන්ඩ්‍රොයිඩ් 8 හි නව මට්ටමේ ආරක්ෂක ප්‍රතිපත්තියක් එක් කරයි.


11

මම දැනටමත් එහි ඇති ඇන්ඩ්‍රොයිඩ් මැනිෆෙස්ට් ගොනුවෙන් මෙම රේඛාව ඉවත් කර ඇත්තෙමි

 android:networkSecurityConfig="@xml/network_security_config" 

සහ එකතු කරන ලදි

android:usesCleartextTraffic="true"

මෙය මැනිෆෙස්ට් හි යෙදුම් ටැගයට ඇතුළත් වේ

<application
    android:usesCleartextTraffic="true"
    android:allowBackup="true"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    >

ඇන්ඩ්‍රොයිඩ් 9 සහ 10 යන දෙවර්ගයේම මෙම දෝෂය ක්ලියර්ටෙක්ස්ට් HTTP ගමනාගමනය overlay.openstreetmap.nl සඳහා මට අහිමි වී ඇත. මෙය ඇන්ඩ්‍රොයිඩ් 8 සඳහාද ක්‍රියා කරනු ඇතැයි මම විශ්වාස කරමි.


8

මෙම විවිධ පිළිතුරු යෙදීම සඳහා Xamarin.Android, ඔබට අතින් සංස්කරණය කිරීම හා එදිරිව පන්ති සහ එකලස් මට්ටමේ ගුණාංග භාවිතා කළ හැකියAndroidManifest.xml

පා course මාලාවේ අන්තර්ජාල අවසරය අවශ්‍යයි (du ..):

[assembly: UsesPermission(Android.Manifest.Permission.Internet)]

සටහන: සාමාන්‍යයෙන් එකලස් කිරීමේ මට්ටමේ ගුණාංග ඔබේ AssemblyInfo.csගොනුවට එකතු කරනු ලැබේ , නමුත් ඕනෑම ගොනුවක්, වැඩට පහළින් usingසහ ඉහළින් namespace.

ඔබගේ යෙදුම් උප පංතියේ (අවශ්‍ය නම් එකක් සාදන්න), ඔබට ගොනුවකට NetworkSecurityConfigයොමු කිරීමක් සමඟ එකතු කළ හැකිය Resources/xml/ZZZZ.xml:

#if DEBUG
[Application(AllowBackup = false, Debuggable = true, NetworkSecurityConfig = "@xml/network_security_config")]
#else
[Application(AllowBackup = true, Debuggable = false, NetworkSecurityConfig = "@xml/network_security_config"))]
#endif
public class App : Application
{
    public App(IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer) : base(javaReference, transfer) { }
    public App() { }

    public override void OnCreate()
    {
        base.OnCreate();
    }
}

Resources/xmlෆෝල්ඩරයේ ගොනුවක් සාදන්න ( xmlඅවශ්‍ය නම් ෆෝල්ඩරය සාදන්න ).

උදාහරණ xml/network_security_configගොනුව, අවශ්‍ය පරිදි සකසන්න (වෙනත් පිළිතුරු බලන්න)

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
          <domain includeSubdomains="true">www.example.com</domain>
          <domain includeSubdomains="true">notsecure.com</domain>
          <domain includeSubdomains="false">xxx.xxx.xxx</domain>
    </domain-config>
</network-security-config>

ඔබට UsesCleartextTrafficපරාමිතිය භාවිතා කළ හැකිය ApplicationAttribute:

#if DEBUG
[Application(AllowBackup = false, Debuggable = true, UsesCleartextTraffic = true)]
#else
[Application(AllowBackup = true, Debuggable = false, UsesCleartextTraffic = true))]
#endif

ඔබ ඩොමින් එකක නොමැති නම් සහ 192.168 හි දේශීය සත්කාරක ලිපිනයක නම් මෙය ක්‍රියාත්මක වන්නේ කෙසේද? අයදුම්කරු අන්තර්ජාලය තුළ සජීවීව නොව දේශීය ජාලයක් වනු ඇත
rogue39nin

xamrian ආකෘති සඳහා වන වාක්‍ය ඛණ්ඩය කුමක්ද
rogue39nin

answer rogue39nin මගේ පිළිතුරේ අවසාන කොටස භාවිතා කරන්න:UsesCleartextTraffic = true
සුෂි හැන්ගෝවර්

7

සරල හා පහසුම විසඳුම [Xamarin Form]

Android සඳහා

  1. ගෝටෝ Android Project, ඉන්පසු ක්ලික් කරන්න Properties,

රූප විස්තරය මෙහි ඇතුළත් කරන්න

  1. AssemblyInfo.csමෙම කේතය එතැනම විවෘත කර අලවන්න:

    [assembly: Application(UsesCleartextTraffic =true)]

රූප විස්තරය මෙහි ඇතුළත් කරන්න

IOS සඳහා

භාවිතා කරන්න NSAppTransportSecurity:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබේ ගොනුවේ යටි ශබ්දකෝෂයට NSAllowsArbitraryLoadsයතුර සැකසිය යුතුය .YESNSAppTransportSecurityinfo.plist

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

ලැයිස්තු වින්‍යාසය


4

මගේ යෙදුම සංවර්ධනය කිරීමේදී "ක්ලියර්ටෙක්ස්ට් එච්ටීටීපී ගමනාගමනයට අවසර නැත" යන දෝෂය මට ඇත. මගේ යෙදුමේ ජාල ඇමතුම් සඳහා මම Retrofit2 භාවිතා කරන අතර මට ව්‍යාපෘති පරිසරයන් දෙකක් ඇත (dev & production). මගේ නිෂ්පාදන වසමට HTTPS ඇමතුම් සමඟ SSL සහතිකයක් ඇති අතර dev හට https නොමැත. ගොඩනැගීමේ රසයන්හි වින්‍යාසය එකතු වේ. නමුත් මම dev වෙත වෙනස් වූ විට, මෙම ගැටළුව අවුලුවනු ඇත. ඒ නිසා මම ඒ සඳහා පහත විසඳුම එකතු කර ඇත්තෙමි.

මම මැනිෆෙස්ටයේ පැහැදිලි පෙළ ගමනාගමනය එකතු කර ඇත්තෙමි

 android:usesCleartextTraffic="true"

ඉන්පසු මම රෙට්රොෆිට් වින්‍යාස පංතියේ OKHttp නිර්මාණය කිරීමේ වේලාවට සම්බන්ධතා පිරිවිතරයක් එක් කර ඇත්තෙමි.

 .connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))

සම්පූර්ණ OkHttpClient නිර්මාණය පහත දැක්වේ

OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .readTimeout(10, TimeUnit.SECONDS)
        .connectTimeout(10, TimeUnit.SECONDS)
        .cache(null)
        .connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))
        .addInterceptor(new NetworkInterceptor(context))
        .addInterceptor(createLoggingInterceptor())
        .addInterceptor(createSessionExpiryInterceptor())
        .addInterceptor(createContextHeaderInterceptor())
        .build();

4

ගොනුව සාදන්න - res / xml / network_security.xml

Network_security.xml -> හි

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">192.168.0.101</domain>
    </domain-config>
</network-security-config>

AndroidManifests.xml විවෘත කරන්න:

 android:usesCleartextTraffic="true" //Add this line in your manifests

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/AppTheme">

4

යාවත්කාලීන කිරීම 2019 දෙසැම්බර් අයනික - 4.7.1

<manifest xmlns:tools=“http://schemas.android.com/tools”>

<application android:usesCleartextTraffic=“true” tools:targetApi=“28”>

කරුණාකර ඉහත අන්තර්ගතය android මැනිෆෙස්ට් .xml ගොනුවේ එක් කරන්න

අයනික පෙර සංස්කරණ

  1. ඔබගේ config.xmlඅයනික ව්‍යාපෘතියේ පහත සඳහන් දෑ ඇති බවට වග බලා ගන්න :

    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
                <application android:networkSecurityConfig="@xml/network_security_config" />
                <application android:usesCleartextTraffic="true" />
            </edit-config>
  2. අයනික කෝර්ඩෝවා බිල්ඩ් ඇන්ඩ්‍රොයිඩ් ධාවනය කරන්න. එය වේදිකා යටතේ ඇන්ඩ්‍රොයිඩ් ෆෝල්ඩරය නිර්මාණය කරයි

  3. ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ විවෘත කර අපගේ ව්‍යාපෘති ව්‍යාපෘති-වේදිකා-ඇන්ඩ්‍රොයිඩ් හි ඇති ඇන්ඩ්‍රොයිඩ් ෆෝල්ඩරය විවෘත කරන්න. මිනිත්තු කිහිපයක් සඳහා එය තබන්න, එවිට එය ශ්‍රේණිය ගොඩනඟයි

  4. පසු gradle buildඅපි ඇතුළු සඳහා යම් යම් දෝෂ ලබා නිම වී minSdVersionඇති manifest.xml. දැන් අප කළ පමණක් ඉවත් කරයි <uses-sdk android:minSdkVersion="19" />සිට manifest.xml.

    එය ස්ථාන දෙකෙන්ම ඉවත් කර ඇති බවට වග බලා ගන්න:

    1. යෙදුම → ප්‍රකාශ AndroidManifest.xmlවේ.
    2. කෝර්ඩෝවාලිබ් → ප්‍රකාශ AndroidManifest.xmlවේ.

    දැන් නැවත ශ්‍රේණිය තැනීමට උත්සාහ කරන්න, දැන් එය සාර්ථකව ගොඩනඟයි

  5. යෙදුම් → මැනිෆෙස්ට් in හි යෙදුම් ටැගයෙහි ඔබ පහත සඳහන් දෑ ඇති බවට වග බලා ගන්න Androidmanifest.xml:

    <application
    android:networkSecurityConfig="@xml/network_security_config"  android:usesCleartextTraffic="true" >
  6. විවෘත කරන්න network_security_config(යෙදුම → res xml network_security_config.xml).

    පහත කේතය එක් කරන්න:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">xxx.yyyy.com</domain>
        </domain-config>
    </network-security-config>

මෙන්න xxx.yyyy.comඔබේ HTTP API හි සබැඳිය. URL එකට පෙර ඔබ කිසිදු Http එකක් ඇතුළත් නොකරන බවට වග බලා ගන්න.

සටහන: දැන් ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ භාවිතයෙන් යෙදුම සාදන්න (බිල්ඩ් - බිල්ඩ් බන්ඩල්ස් / ඒපීකේ - බිල්ඩ් ඒපීකේ) දැන් ඔබට එම ඇප් එක භාවිතා කළ හැකි අතර එය ඇන්ඩ්‍රොයිඩ් පයි තුළ හොඳින් ක්‍රියාත්මක වේ. ඔබ අයනික කෝර්ඩෝවා බිල්ඩ් ඇන්ඩ්‍රොයිඩ් භාවිතයෙන් යෙදුමක් තැනීමට උත්සාහ කරන්නේ නම් එය මෙම සියලු සැකසුම් අභිබවා යයි, එබැවින් ඔබ ව්‍යාපෘතිය තැනීමට ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ භාවිතා කරන බවට වග බලා ගන්න.

ඔබ සතුව යෙදුමේ පැරණි අනුවාදයන් ස්ථාපනය කර ඇත්නම්, ඒවා අස්ථාපනය කර උත්සාහ කර බලන්න, නැතිනම් ඔබට යම් දෝෂයක් ඉතිරි වනු ඇත:

යෙදුම ස්ථාපනය කර නැත


අයනික? කෝර්ඩෝවා? එබැවින් එය සාමාන්‍ය ඇන්ඩ්‍රොයිඩ් ගොඩනැගීමක් නොව, ඒ වෙනුවට ඉදිරිපස තාක්‍ෂණයෙන් ස්වදේශීය යෙදුම් තැනීමේ රාමුවකි .
සති අන්තය

ඇන්ඩ්‍රොයිඩ් යෙදුමේ වෙබ් ක්‍රියාකාරීත්වය ක්‍රියාත්මක කිරීමට අයොනික් ඔබට සපයන අතර මයික්‍රෝෆෝනය, කැමරාව වැනි ඇන්ඩ්‍රොයිඩ් ස්වදේශීය විශේෂාංග වෙත ප්‍රවේශ වීමට කෝර්ඩෝවා ඔබට උදව් කරයි.
Gvs Akhil

4

එකතු කිරීම ... android: usesCleartextTraffic = "true" ... ඔබේ මැනිෆෙස්ට් ගොනුවට ගැටළුව විසඳන බවක් පෙනෙන්නට තිබුණත් එය දත්ත අඛණ්ඩතාවයට තර්ජනයක් විවර කරයි.

ආරක්ෂක හේතු මත මට භාවිතා ප්රකාශ වන කේත සමඟ ඇන්ඩ්රොයිඩ්: usesCleartextTraffic සතන්හි ගොනුව (වගේ ඇතුළත ලොව පිළිගත් පිළිතුර විකල්ප 3 @ එනම් Hrishikesh Kadam ඇති ප්රතිචාරය) පමණක් දෝශනිරාකරණ වාර්ථා පරිසරය මත අසංෙක්තිත ෙපළ ඉඩ.

මගේ build.gradle (: app) ගොනුව තුළ, මම මේ වගේ ප්‍රකාශිත ස්ථාන දරන්නෙකු එක් කළෙමි:

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
            manifestPlaceholders.cleartextTrafficPermitted ="true"
        }
    }

ඉහත පේළියේ ඇති ස්ථාන දරන්නාගේ නම cleartextTrafficPermitted සටහන් කරන්න

            manifestPlaceholders.cleartextTrafficPermitted ="true"

මගේ ඇන්ඩ්‍රොයිඩ් ප්‍රතිපත්ති ප්‍රකාශනයේ දී මම එකම ස්ථාන දරන්නා භාවිතා කළෙමි ...

AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="${cleartextTrafficPermitted}"
        ...>
        ...
    </application>
</manifest>

ඒ සමඟ, පැහැදිලි පා traffic ගමනාගමනය සඳහා අවසර දෙනු ලබන්නේ දෝශ නිරාකරණ පරිසරය යටතේ පමණි.


1
මෙය ඉහළ නොවන්නේ මන්දැයි විශ්වාස නැත! අපගෙන් බොහෝ දෙනෙකුට අවශ්‍ය වන්නේ http දේශීයව නිදොස්කරණයෙන් ධාවනය කිරීමට පමණි.
ඒඩ්‍රියන් එල්ඩර්

3

වැඩ කරන පිළිතුර, මට නම්, මෙය @ පැබ්ලෝ සීගරා විසිනි:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

මේ සම්බන්ධයෙන් ඔබට ආරක්ෂක අනතුරු ඇඟවීමක් ලැබිය හැකිය cleartextTrafficPermitted="true"

'සුදු ලැයිස්තුවට' වසම් ඔබ දන්නේ නම්, ඔබ පිළිගත් පිළිතුර සහ ඉහත දෙකම මිශ්‍ර කළ යුතුය:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">books.google.com</domain>
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </domain-config>
</network-security-config>

මෙම කේතය මා වෙනුවෙන් වැඩ කරයි, නමුත් මගේ යෙදුමට අවශ්‍ය වන්නේ books.google.com වෙතින් දත්ත ලබා ගැනීමයි. මේ ආකාරයෙන් ආරක්ෂක අනතුරු ඇඟවීම අතුරුදහන් වේ.


2

මගේ නඩුවේදී බ්‍රව්සරයේ ද URL ක්‍රියා නොකරයි.

මම https://www.google.com/ සමඟ පරීක්ෂා කරමි

webView.loadUrl("https://www.google.com/")

එය මට වැඩ කළා.


myWebView.loadUrl ("www.site.com"); වෙබ්මාස්ටර්වරුන් සඳහාද එස්එස්එල් එච්ටීටීපීඑස් නොමැති නමුත් එච්ටීටීපී පමණක් ඇත. හිස් පිටුවක් ලබා ගත හැකි නමුත්.
බේ

ලබා දී ඇති url ඔබේ වෙබ් බ්‍රව්සරයේ වැඩ කරන්නේ නම් ඔබට ඔබේ වෙබ් දර්ශනයේ භාවිතා කළ හැකිය. එසේ නොමැතිනම් ඔබට මෙම දෝෂය දැකිය හැකිය.
මයුරේෂ් දේශ්මුක්

සමහර විට එය දෝෂයක් ඇති බව මම දනිමි, නමුත් බොහෝ විට මම හිස් පිටුවක් දකින විට පවා ධාවනය වේ. ජාවාස්ක්‍රිප්ට් “සත්‍ය” වන අතර මට වෙබ් අඩවියට නිවැරදිව පිවිසිය හැකිය. මම හිස් පිටුවක් දකින්නේ ඇයිදැයි මම නොදනිමි.
බේ


2

සඳහා Xamarin.Android සංවර්ධකයින් කරන ලෙස සහතික කර HttpClient ක්රියාත්මක කිරීම සහ SSL / TLS Default කිරීමට පියවර ගෙන තිබේ.

එය ඇන්ඩෝරිඩ් විකල්ප -> උසස් ඇන්ඩ්‍රොයිඩ් විකල්ප යටතේ සොයාගත හැකිය.

රූප විස්තරය මෙහි ඇතුළත් කරන්න


2

මෙය ආරක්ෂක හේතූන් මත සිදු කරනු ලැබේ, හැකි සෑම විටම HTTPS (HTTP Secure ) භාවිතා කිරීමට ඔබ කැමති විය යුතුය.
ඔබට ඒ ගැන වැඩි විස්තර මෙතැනින් කියවිය හැකිය

ඔබගේ තත්වය අනුව මෙම ගැටළුව සඳහා විවිධ විසඳුම් තිබේ.

ඔබ පළමු පාර්ශවීය සේවාවක් සමඟ සන්නිවේදනය කිරීමට උත්සාහ කරන්නේ නම්, IE: ඔබේම වෙබ් සේවාදායකයක්

සේවාදායක පැත්ත: ඔබ එම සේවාදායකයට HTTPS සහය එක් කළ යුතු අතර HTTP වෙනුවට HTTPS භාවිතා කළ යුතුය. මේ දින ඔබ පවා වගේ සේවාවන් භාවිතා නොමිලේ එය කරන්න පුළුවන් LetsEncrypt හා අන් අය
සේවාලාභියා පැත්තේ: ඔබ භාවිතා කරන්නේ නම් HttpURLConnectionවලින් java.netඔබට අවැසි පැකේජය HttpsURLConnectionපිළිබඳ java.net.sslපැකේජයක්, එය සමාන නොවේ නම් සමාන API ඇත, ඒ නිසා ස්විචය වෙහෙසකින් විය යුතුය.

ඔබ ගූගල්, ෆේස්බුක් වැනි කාලගුණ සේවාවක් වැනි තෙවන පාර්ශවීය සේවාවක් භාවිතා කරන්නේ නම්.

ඔබ ඔබේ ඉල්ලීම URL එක වෙනස් කළ හැකිය ඔබ ආධාරක සමග සන්නිවේදනය කරන සේවය HTTPS බව (එය බොහෝ දුරට ඉඩ කරන්නේ වන) නඩුවේ http://abc.xyzකිරීමට https://abc.xyz.

අවසාන පියවරක් ලෙස, ඔබට සන්නිවේදනය කිරීමට අවශ්‍ය තෙවන පාර්ශවීය සේවාවක් HTTPS හෝ වෙනත් ආකාරයක ආරක්ෂිත සන්නිවේදනයකට සහාය නොදක්වන්නේ නම්, ඔබට මෙම පිළිතුර භාවිතා කළ හැකිය , නමුත් නැවතත්, මෙය බොහෝ සෙයින් අවශ්‍ය වන අරමුණ පරාජය කරන බැවින් මෙය නිර්දේශ නොකරයි. ආරක්ෂක ලක්ෂණය.


2
 cleartext support is disabled by default.Android in 9 and above

 Try This one I hope It will work fine

1 Step:->  add inside android build gradle (Module:App)
            useLibrary 'org.apache.http.legacy'

  android {
               compileSdkVersion 28
              useLibrary 'org.apache.http.legacy'

          }

ඉන්පසු 2 පියවර: -> මැනිෆෙස්ට් යෙදුම් ටැගය තුළ මැනිෆෙස්ට් එකතු කරන්න

<application
    android:networkSecurityConfig="@xml/network_security_config">//add drawable goto Step 4

   // Step --->3  add to top this line  
     <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />

</application>

// පියවර 4 - >> ඇඳිය ​​හැකි >> Xml ගොනුවක් සාදන්න >> නම >> network_security_config.xml

   <?xml version="1.0" encoding="utf-8"?>
   <network-security-config>
      <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
           <certificates src="system" />
        </trust-anchors>
      </base-config>
    </network-security-config>

මෙය aosp හි වෙනස් කළ හැකිද?
සෙවනැලි

Ha සෙවනැල්ල ඔව් ඔබට එය වෙනස් කළ හැකිය.
අෂිෆ්

මට එය හරියටම වෙනස් කළ හැක්කේ කොතැනින්දැයි මට දැනගත හැකිද?
සෙවනැලි

Ha සෙවන <base-config cleartextTrafficPermitted = "true"> <trust-anchors> <සහතික src = "system" /> </trust-anchors> </base-config> <domain-config cleartextTrafficPermitted = "true"> <වසම includeSubdomains = "true"> www.yourwebsidedomain.com </domain> </domain-config>
අෂිෆ්

නැත!! නැවතත් ඔබ අයදුම්පත් පැත්තෙන් කියනවා. රාමුවෙන් වෙනස් වන්නේ කෙසේදැයි මම අසමි / <> ෆෝල්ඩර පන්තිය?
සෙවනැලි

1

ස්වදේශීය 0.58.5 හෝ ඊට වැඩි අනුවාදයකට ප්‍රතික්‍රියා කරන්න. ඔවුන් includeSubdomainරයිට්ස් නව් ආයතනයේ 0.58.5 ඔවුන්ගේ config ගොනු.

ChangeLog

Rn 0.58.5 දී ඔවුන් network_security_configසිය සේවාදායක වසම සමඟ ප්‍රකාශ කර ඇත. ජාල ආරක්ෂණ වින්‍යාසය කිසියම් වසමකින් පැහැදිලි පෙළ ගමනාගමනය සඳහා යෙදුමට ඉඩ දෙයි. එබැවින් android:usesCleartextTraffic="true"ඔබේ මැනිෆෙස්ට් ගොනුවේ යෙදුම් ටැගය ප්‍රකාශ කිරීමෙන් අමතර වෑයමක් දැරීමට අවශ්‍ය නැත . RN අනුවාදය යාවත්කාලීන කිරීමෙන් පසු එය ස්වයංක්‍රීයව විසඳනු ඇත.


1

API අනුවාදය 9.0 වෙනස් කිරීමෙන් පසු දෝෂය ක්ලියර්ටෙක්ස්ට් HTTP ගමනාගමනය ඔබේ- API.DOMAIN.COM වෙත අවසර නැත (targetSdkVersion = "28"). xamarin, xamarin.android සහ android චිත්‍රාගාරවල.

Xamarin, xamarin.android සහ android චිත්‍රාගාරයේ මෙම දෝෂය විසඳීමට පියවර දෙකක්.

පියවර 1: ගොනු සම්පත් සාදන්න / xml / network_security_config.xml

Network_security_config.xml හි

<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">mobapi.3detrack.in</domain>
  </domain-config>
</network-security-config>

පියවර 2: AndroidManifest.xml යාවත්කාලීන කරන්න -

ඇන්ඩ්‍රොයිඩ් එක් කරන්න: networkSecurityConfig = යෙදුම් ටැගය මත "@ xml / network_security_config". උදා:

<application android:label="your App Name" android:icon="@drawable/icon" android:networkSecurityConfig="@xml/network_security_config">

1

මෙම පරාමිතිය ශීර්ෂයට එක් කිරීමෙන් apiSauce React Native හි මගේ ගැටළුව විසඳා ඇත

"Content-Type": "application/x-www-form-urlencoded",
  Accept: "application/json"

1

ඔබ අයනික භාවිතා කරන්නේ නම් සහ ස්වදේශීය http අතරතුර මෙම දෝෂය ලබා ගන්නේ නම් ප්ලගිනය , පහත සඳහන් නිවැරදි කිරීම් සිදු කළ යුතුය-

Goto resources/android/xml/network_security_config.xml වෙනස් එය පාසලේ,

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

ඒක මට වැඩක්!


0

ක්ලියර්ටෙක්ස්ට් යනු සම්ප්‍රේෂණය කරන ලද හෝ ගබඩා කර ඇති තොරතුරු සංකේතනය කර නැති හෝ සංකේතනය කිරීමට අදහස් කරන තොරතුරු වේ.

යෙදුමක් HTTP ( https නොවේ ) වැනි පැහැදිලි පෙළ ජාල තදබදයක් භාවිතා කරමින් සේවාදායකයන් සමඟ සන්නිවේදනය කරන විට , එය අන්තර්ගතය අනවසරයෙන් හා හානි කිරීමේ අවදානම ඉහළ නැංවිය හැකිය. තෙවන පාර්ශවයන්ට අනවසර දත්ත එන්නත් කිරීමට හෝ පරිශීලකයින් පිළිබඳ තොරතුරු කාන්දු කිරීමට හැකිය. HTTPS වැනි ගමනාගමනය පමණක් සුරක්ෂිත කිරීමට සංවර්ධකයින් දිරිමත් කරනුයේ එබැවිනි. මෙන්න මෙම ගැටළුව විසඳන්නේ කෙසේද යන්න ක්‍රියාත්මක කිරීම සහ යොමු කිරීම.



0

මම Cordova 8 භාවිතා කරන්නේ cordova-plugin-whitelist 1.3.4 වන අතර එය පෙරනිමියෙන් මගේ යෙදුමට අන්තර්ජාලයට පිවිසිය නොහැකි අතර මම මැනිෆෙස්ට් හි පරාමිතියක් පමණක් එක් කරමි. කරමි. Xml android: usesCleartextTraffic = "true"

Cordova 8 හි mainfest හි මාර්ගය වෙනස් කර ඇත: වේදිකාව / android / app / src / main / AndroidManifest.xml.

 <?xml version='1.0' encoding='utf-8'?>
    <manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
        <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
        <application 
android:hardwareAccelerated="true" 
android:icon="@mipmap/ic_launcher" 
android:label="@string/app_name" 
android:supportsRtl="true" 
android:usesCleartextTraffic="true">
            <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
                <intent-filter android:label="@string/launcher_name">
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    </manifest>

මෙය සැබෑ මෝඩකමකි, මන්ද ඔබේ යෙදුමට අන්තර්ජාලයට ප්‍රවේශය අවශ්‍ය බව පැහැදිලිය ....

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.