অ্যান্ড্রয়েড 8: ক্লিয়ারটেক্সট HTTP ট্র্যাফিকের অনুমতি নেই


1035

অ্যান্ড্রয়েড 8-র ব্যবহারকারীদের কাছ থেকে আমার কাছে প্রতিবেদন ছিল যে আমার অ্যাপটি (যেটি ব্যাক-এন্ড ফিড ব্যবহার করে) সামগ্রী প্রদর্শন করে না। তদন্তের পরে আমি Android 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)

(আমি প্যাকেজের নাম, ইউআরএল এবং অন্যান্য সম্ভাব্য শনাক্তকারীগুলি সরিয়েছি)

অ্যান্ড্রয়েড On এবং নিম্নে সমস্ত কিছু কাজ করে, আমি android:usesCleartextTrafficম্যানিফেস্টে সেট করি না (এবং এটির সাহায্যে সেট করা trueনেই, এটি যাইহোক ডিফল্ট মান), না আমি নেটওয়ার্ক সুরক্ষা তথ্য ব্যবহার করি না। যদি আমি কল করি তবে এটি একই অ্যাপ্লিকেশন ফাইলটি ব্যবহার করে পুরানো সংস্করণে অ্যান্ড্রয়েড 8 এর জন্য NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted()ফিরে আসে । আমি অ্যান্ড্রয়েড ও সম্পর্কে গুগল তথ্যতে এর কিছু উল্লেখ সন্ধান করার চেষ্টা করেছি, তবে সাফল্য না পেয়ে।falsetrue


28
এই কোডল্যাবটি যাচাই করুন তবে ব্যবহার করুনcleartextTrafficPermitted="true"
ArtiomLK

5
এটি রক্ষণ করা একটি অ্যাপ্লিকেশনটিতে এটি ঘটে কারণ সার্ভারটি কিছু ক্ষেত্রে HTTPS থেকে HTTP তে পুনঃনির্দেশ করে।
বড় ম্যাকলার্জহিউজ

উত্তর:


2193

মতে নেটওয়ার্ক নিরাপত্তা কনফিগারেশন -

অ্যান্ড্রয়েড 9 (এপিআই স্তর 28) দিয়ে শুরু করে ক্লিয়ারটেক্সট সমর্থনটি ডিফল্টরূপে অক্ষম করা আছে।

এছাড়াও দেখুন - https://koz.io/android-m-and-the-war-on-cleartext-traffic/

কোডলেব ব্যাখ্যা - https://codelabs.developers.google.com/codelabs/android-network-security-config/index.html

বিকল্প 1 -

প্রথমে URL টি "https: //" দিয়ে "http: //" এর পরিবর্তে আঘাত করার চেষ্টা করুন

বিকল্প 2 -

ফাইল পুনরায় তৈরি করুন / এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল -

<?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>

AndroidManLive.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 -

অ্যান্ড্রয়েড: ক্লিয়ারটেক্সট ট্র্যাফিক ডক ব্যবহার করে

AndroidManLive.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 টিতে এই বৈশিষ্ট্যটি সেট করে অ্যাপ্লিকেশনটিকে অন্য একটি সেলিনাক্স স্যান্ডবক্সে স্যুইচ করে। নিম্নলিখিত সীমাবদ্ধতাগুলি স্তর 2 স্যান্ডবক্সে প্রযোজ্য:

  • usesCleartextTrafficনেটওয়ার্ক সুরক্ষা কনফিগারেশনের ডিফল্ট মানটি মিথ্যা is
  • ইউআইডি ভাগ করে নেওয়ার অনুমতি নেই।

সুতরাং বিকল্প 4 -

আপনি যদি android:targetSandboxVersion<manifest>তারপর, এটা কমাতে1

AndroidManLive.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
ক্লিয়ারটেক্সট এইচটিটিপি এর অর্থ কি তারা https এর পরিবর্তে কোনও HTTP সাইট ব্যবহার করছিল?
টম হ্যামন্ড 21

4
বিকল্প-ডোমেনটি ডোমেন-কনফিগার থেকে বেস-কনফিগারে পরিবর্তন করা আমার জন্য এটি স্থির করেছে
গ্রেগএম

165
প্রতিটি বিকাশকারী যোগ করতে চলেছে তবে এই অ্যান্ড্রয়েড সুরক্ষা বৈশিষ্ট্যের মূল বিষয় কী android:usesCleartextTraffic="true"?
ফল

69
এটি এই সমস্যার সর্বোত্তম সমাধানের কথাও উল্লেখ করে না: এইচটিটিপিএস ব্যবহার করুন। এই উত্তরে উল্লিখিত বিকল্পগুলি কেবল একটি শেষ অবলম্বন হওয়া উচিত।
খ্রিস্টান ব্রাজেমন

131

অ্যান্ড্রয়েড ম্যানিফেস্টে আমি এই প্যারামিটারটি পেয়েছি:

android:networkSecurityConfig="@xml/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>  

ঠিক আমি ক্লিয়ারটেক্সট ট্র্যাফিকপ্রিটকে সত্যে পরিবর্তন করেছি


11
+1 এটি দরকারী যদি আপনি অন্যান্য উত্তরগুলির পরামর্শ অনুসারে সাবসেট বজায় রাখার পরিবর্তে অ্যাপ্লিকেশনটিতে ব্যবহৃত সমস্ত ডোমেন জুড়ে এটি প্রয়োগ করতে চান তবে এটি কার্যকর।
মার্টিন দাম

2
Perfetct। এখানে আরো তথ্য: codelabs.developers.google.com/codelabs/...
xxxxxxxxxxxxx

পরিবর্তনের পরে অ্যাপ্লিকেশনটি পুনরায় ইনস্টল করুন
Ssenyonjo

118

অ্যান্ড্রয়েড 9 এ আমার সমস্যাটি এই উত্তর থেকে সমাধানের সাথে ডোমেনগুলির জন্য একটি ওয়েবভিউতে নেভিগেট করছিল

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

এবং:

মাঝামাঝি / 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
কেবলমাত্র এই উত্তরটি আমার পক্ষে কাজ করেছিল। অন্যান্য উত্তর আমার পক্ষে কাজ করে না। এটি সেরা উত্তর।
আহমাদুল্লাহ সৈকত

3
পুরোপুরি কাজ! তোমাকে অনেক ধন্যবাদ!
টেডভিএন

1
এই একজন আমার জন্যও কাজ করেছিলেন, আমি জানি না কেন
সিনা রহিমি

আমি কি কোনওভাবে এটি আবার লিখতে পারি gradle?
মোরোজভ

2
সমাধানের কোনওটিই আমার কাজে আসেনি। এই ছাড়ুন .. !! অসংখ্য ধন্যবাদ.
কুণাল কাক্কাদ

92

আপনি কেবল ডিবাগ করার সময় ক্লিয়ারটেক্সটকে অনুমতি দিতে চাইতে পারেন, তবে উত্পাদনে ক্লিয়ারটেক্সটকে প্রত্যাখ্যান করার সুরক্ষা সুবিধাগুলি রাখুন। এটি আমার পক্ষে দরকারী কারণ আমি আমার অ্যাপ্লিকেশনটি এমন ডেভলপমেন্ট সার্ভারের বিরুদ্ধে পরীক্ষা করি যা https সমর্থন করে না। উত্পাদনে https কীভাবে প্রয়োগ করা যায় তা এখানে, তবে ডিবাগ মোডে ক্লিয়ারটেক্সটকে অনুমতি দিন:

বিল্ড.gradle এ:

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

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

অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে অ্যাপ্লিকেশন ট্যাগে

android:usesCleartextTraffic="${usesCleartextTraffic}"

1
এটি শুধুমাত্র এপিআই 23+ তে ব্যবহৃত হয়েছে। আপনি যদি কোনও এপিআই স্বাধীন সমাধান চান তবে অনুমোদিত একটিতে এখানে ক্লিক করুন: স্ট্যাকওভারফ্লো / প্রশ্ন / 46302058/ … একটি ভাল বিকল্প ...
রিক ভ্যান ভেলজেন

প্রশ্ন: অ্যাপ্লিকেশন যখন ওয়েব সার্ভারগুলি ব্যবহার করে যেগুলি HTTP বা ডিজাইন দ্বারা https হতে পারে, তখন ক্লিয়ারটেক্সট ট্র্যাফিকে ব্যবহার করবে: "মিথ্যা" এমনকি যদি এইচটিএল ইউআরএলগুলি ওয়েব পরিষেবাদি ব্যবহার করতে সক্ষম হওয়া প্রয়োজন? সুতরাং এটি সত্যে সেট করার অর্থ হ'ল ডিফল্টরূপে https পরিষেবাগুলি যে কোনওভাবে পরিষ্কার পাঠ্য পাঠায় না?
কেন

2
ধন্যবাদ মানুষ! এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি কাজ করার জন্য এটি করা সবচেয়ে নিরাপদ
dm707

63

আপনার URL থেকে পরিবর্তন HTTPকরতেHTTPS ;

এটি কাজ করে !!!


97
কিভাবে এই upvated হয়? আপনার সার্ভার ইউআরএল https না হলে আপনি একটি হ্যান্ডশেক ব্যতিক্রম পেয়ে
যাবেন

18
upvated কারণ এটি করা সঠিক জিনিস (উত্পাদন পরিবেশে)। HTTPS ডিফল্ট হওয়া উচিত, HTTP নয়।
বীটস্ট্রা

28
@ বিটসটা আপনি ধরে নিয়েছেন যে বিষয়বস্তুটি কী সরবরাহ করছে তাতে আপনার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে। এই উত্তরটি তাই নিষ্প্রভ বা প্রকৃতির উল্লসিত।
মার্টিন দাম

10
@ বিটসট্রা কেন ডিবাগ করার সময় লোকাল মেশিনে এইচটিটিপিএস ডিফল্ট হওয়া উচিত? এটি এত বোকা, গুগল পিতৃতন্ত্রের অন্য একটি উদাহরণ। ভাগ্যক্রমে কেউ টাইলারের সমাধান দ্বারা এটি ডিবাগ মোডের জন্য পৃথক করতে পারেন।
বেভোর

1
@ মার্টিনপ্রাইস, আমি সম্মত হই যে উত্তরটি খুব সংক্ষিপ্ত এবং সমস্ত পরিস্থিতিতে প্রযোজ্য নয়। তবে, এইচটিটিপি ট্রাফিকের অনুমতি দেওয়াটাই সঠিক উপায়, এমনটা ধরেই এই উত্তরগুলি বেশিরভাগেরই নয়। সমস্ত হোস্টের জন্য সমস্ত পরিস্থিতিতে ক্লিয়ারটেক্সট ট্র্যাফিকের অনুমতি দেওয়া গুগল কেন প্রথম স্থানে পরিবর্তিত হয়েছিল সে কারণগুলিকে সম্পূর্ণভাবে উপেক্ষা করে। উত্পাদন পরিবেশের জন্য এইচটিটিপিএস হ'ল প্রায় সর্বদা সঠিক উপায়। ডিবাগ পরিবেশে এইচটিটিপি অনুমতি দেওয়া অবশ্যই কোনও সমস্যা নয়, যেমনটি আমি মন্তব্যে উল্লেখ করেছি।
বেটসট্রা

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>

উপরে প্রদত্ত পরামর্শে আমি আমার ইউআরএলটি http://xyz.abc.com/mno/ হিসাবে সরবরাহ করছিলাম

আমি এটিকে xyz.abc.com এ পরিবর্তন করেছিলাম তখন এটি কাজ শুরু করে।


8
ডোমেন! = ইউআরএল। "HTTP" হ'ল প্রোটোকল। প্রোটোকলটি কখনই ডোমেনের অংশ হয় না।
অবিশ্বাস্য জানুয়ারী

সেরা উত্তর।, ধন্যবাদ বেস কনফিগার করার চেয়ে ডোমেন নির্দিষ্ট কনফিগার সেট করা ভাল
ত্রিনিদ থাকুল

এটি সঠিক, কেবলমাত্র এফকিউডিএনই সেখানে সমর্থন করা হচ্ছে, কোনও আইপি ঠিকানা নেই (এটি উপরে ঠিক আছে)।
মার্টিন জিটলার

10.0.2.2 ডোমেনের জন্য কাজ করছে না। আমি পোর্ট নম্বর যুক্ত করা উচিত?
Ssenyonjo

27

ঠিক আছে, যে ⇒⇒ না ⇐⇐ হাজার হাজার পুনরাবৃত্তি আপনার ম্যানিফেস্ট থেকে এটি যোগ , কিন্তু একটি ইঙ্গিতটি এই যা বেস, কিন্তু দিতে যখন আপনি বাড়তি সুবিধা (এবং হয়তো কিছু পটভূমি তথ্য)।

অ্যানড্রয়েডের এসআরসি-ডিরেক্টরিতে এক ধরণের ওভাররাইটিং কার্যকারিতা রয়েছে।

ডিফল্ট হিসাবে, আপনার আছে

/ অ্যাপ / এসসিআর / প্রধান

তবে আপনি আপনার অ্যান্ড্রয়েডম্যানিয়েস্ট.এক্সএমএল ওভাররাইট করতে অতিরিক্ত ডিরেক্টরি যুক্ত করতে পারেন। এটা যেভাবে কাজ করে:

  • ডিরেক্টরি / অ্যাপ / এসসিআর / ডিবাগ তৈরি করুন
  • ভিতরে AndroidManLive.xML তৈরি করুন

এই ফাইলের ভিতরে, আপনি না ভিতরে সব নিয়ম করা আছে, কিন্তু শুধুমাত্র বেশী আপনি কি পছন্দ ওভাররাইট আপনার / অ্যাপ্লিকেশন / src / থেকে প্রধান / Andro আইডি

অনুরোধ করা ক্লিয়ারটেক্সট-পারমিশনের জন্য এটি দেখতে কেমন এমন একটি উদাহরণ এখানে:

<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 হিসাবে সহজ প্রধান | পরিবেশ মুক্তি

এতে বড় সুবিধা ... আপনার উত্পাদন-ম্যানিফেস্টে আপনার ডিবাগ-স্টাফ নেই এবং আপনি একটি সরল এবং সহজ রক্ষণাবেক্ষণযোগ্য কাঠামো রাখেন


3
এটি অবশ্যই সঠিক সমাধান। অ্যান্ড্রয়েড একটি কারণে এই সুরক্ষা সেটিংস যুক্ত করেছে, তাই তাদের দাঁড়ানো উচিত। আপনার সমাধানগুলি আমাদের স্থানীয় নিরাপত্তাহীন পরিবেশের উপর পরীক্ষা করতে দেয়, অন্যদিকে উত্পাদনগুলি এখনও প্রস্তাবিত সুরক্ষা সেটিংসে থাকবে। ধন্যবাদ!
કૂু

25

এটি কারও জন্য কার্যকর হতে পারে।

অ্যান্ড্রয়েড 9 এর জন্য আমরা সম্প্রতি একই সমস্যা পেয়েছি, তবে আমাদের কেবল ওয়েবভিউয়ের মধ্যে কিছু url প্রদর্শন করা দরকার, খুব বিশেষ কিছু নয়। তাই android:usesCleartextTraffic="true"ম্যানিফেস্টে যোগ করা কাজ করেছে, তবে আমরা এর জন্য পুরো অ্যাপ্লিকেশনটির সুরক্ষার সাথে আপস করতে চাই না। তাই ফিক্স থেকে লিঙ্ক পরিবর্তন ছিল httpথেকেhttps


3
আমি যদি কেবল কয়েকটি URL প্রদর্শন করতে চাই তবে আমার কোনও ওয়েবভিউয়ের দরকার নেই। আমি কেবল একটি টেক্সটভিউ ব্যবহার করি। ;) আমি মনে করি আপনি বোঝাতে চাইছেন কিছু HTML টি পৃষ্ঠা আছে। আপনার সার্ভারটি যদি এসএসএল সরবরাহ করে তবেই আপনার সংশোধন কাজ করে। আপনি কেবল লিঙ্কগুলি পরিবর্তন করতে পারবেন না।
অবিশ্বাস্য জানুয়ারী

2
এটি অবশ্যই যথাসম্ভব সর্বোত্তম বিকল্প, তবে যে কোনওটি সর্বদা এটি চয়ন করতে পারে না - হয় কোনও কার্য সম্পাদনের কারণে বা কেবল সহজ সংস্থানটি ক্লিয়ারটেক্সট এইচটিটিপি-তে উপলব্ধ নাও হতে পারে।
ডাকাটাইন

"আমরা পুরো অ্যাপটির সুরক্ষা নিয়ে আপস করতে চাইনি", এর ফলে কী সুরক্ষা ঝুঁকির কারণ হতে পারে? আমার ক্ষেত্রে একটি ইউআরএল নেই তাই আমি তাদেরকে ম্যানিফেস্টে যুক্ত করতে পারি না।
রবার্ট উইলিয়ামস

হাই @ রবার্ট উইলিয়ামস এর ঠিক অর্থ হ'ল পরিষ্কার ট্র্যাফিকের অ এনক্রিপ্ট হওয়া ট্র্যাফিকের অনুমতি দেওয়া হবে। এখানে একটি ব্লগপোস্টটিকে হয় medium.com/@son.rommer/...
sparkly_frog

আবার একই ঘটনা ঘটল। এই সব সমাধানের চেষ্টা করেছি।
আহমাদুল্লাহ সৈকত

22

নতুন দেশীয় প্রকল্পগুলির জন্য For

এটি ইতিমধ্যে আরএন 0.59 এ স্থির করা হয়েছিল। আপনি 0.58.6 থেকে 0.59 পর্যন্ত আপগ্রেডের পার্থক্য খুঁজে পেতে পারেন আপনি আরএন সংস্করণ আপগ্রেড না করে এটি প্রয়োগ করতে পারেন নীচের পদক্ষেপগুলি অনুসরণ করুন:

ফাইলগুলি তৈরি করুন:

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 /AndroidManLive.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>

এর মূল কারণ জানতে স্বীকৃত উত্তরটি দেখুন Check


2
আমি রিএ্যাক্ট-নেটিভ 0.59.5 ব্যবহার করি এবং আমার একই সমস্যা হচ্ছে, আপনার পরামর্শ অনুসারে আমাদের ম্যানুয়ালি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল সেট করতে হবে।
ক্রিশ্চিয়ান মোরা

11

ঠিক আছে, আমি এটি বুঝতে পেরেছি। এটি ম্যানিফেস্ট প্যারামিটারের কারণে android:targetSandboxVersion="2", আমি যুক্ত করেছি কারণ আমাদের তাত্ক্ষণিক অ্যাপ্লিকেশন সংস্করণও রয়েছে - এটি তাত্ক্ষণিক অ্যাপ থেকে নিয়মিত অ্যাপ্লিকেশনটিতে একবারে আপগ্রেড করা উচিত, এটি স্থানান্তরটি দিয়ে তার ডেটা আলগা করবে না sure তবে অস্পষ্ট বর্ণনার বর্ণনা হিসাবে:

এই অ্যাপটিটি ব্যবহার করতে চায় এমন লক্ষ্য স্যান্ডবক্স নির্দিষ্ট করে। উচ্চতর সানবক্স সংস্করণে বাড়ছে সুরক্ষা।

এই বৈশিষ্ট্যের ডিফল্ট মান হ'ল 1।

এটি স্পষ্টতই কমপক্ষে অ্যান্ড্রয়েড 8 এ, নতুন স্তরের সুরক্ষা নীতি যুক্ত করে।


9

আমি ইতিমধ্যে উপস্থিত অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইল থেকে এই লাইনটি সরিয়েছি

 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 এ চলে গেছে I


8

এই বিভিন্ন উত্তর প্রয়োগ করতে Xamarin.Android, আপনি শ্রেণিবদ্ধ এবং সমাবেশ স্তরের বৈশিষ্ট্য বনাম ম্যানুয়ালি সম্পাদনা করতে পারেনAndroidManifest.xml

অবশ্যই ইন্টারনেটের অনুমতি প্রয়োজন (দুহ ..):

[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 এর স্থানীয় হোস্ট ঠিকানায় আবেদন না করেন তবে এটি কীভাবে কাজ করবে
আবেদনকারীটি

এবং জিম্রিয়ান ফর্মগুলির সিনট্যাক্সটি কী
দুর্বৃত্ত 39nin

@ দুর্বৃত্ত 39nin আমার উত্তরের শেষ অংশটি ব্যবহার করুন:UsesCleartextTraffic = true
সুশী হ্যাঙ্গোভার

4

আমার অ্যাপ্লিকেশন বিকাশের সময় আমি একই "ক্লিয়ারটেক্সট এইচটিটিপি ট্রাফিকের অনুমতি নেই" ত্রুটি পেয়েছি। আমি আমার অ্যাপ্লিকেশনটিতে নেটওয়ার্ক কলের জন্য রেট্রোফিট 2 ব্যবহার করছি এবং আমার দুটি প্রকল্পের পরিবেশ (দেব ও উত্পাদন) রয়েছে। আমার প্রোডাকশন ডোমেনে এইচটিটিপিএস কল সহ এসএসএল শংসাপত্র রয়েছে এবং দেবের https থাকবে না। কনফিগারেশন বিল্ড স্বাদে যুক্ত করা হয়। তবে আমি যখন দেব এ পরিবর্তন করব তখন এই সমস্যাটি ট্রিগার করবে। সুতরাং আমি এটির জন্য নীচের সমাধানটি যুক্ত করেছি।

আমি ম্যানিফেস্টে ক্লিয়ারটেক্সট ট্র্যাফিক যুক্ত করেছি

 android:usesCleartextTraffic="true"

তারপরে আমি পুনঃনির্মাণ কনফিগারেশন ক্লাসে OkHttp তৈরির সময় একটি সংযোগের বৈশিষ্টটি যুক্ত করেছি।

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

সম্পূর্ণ OkHttp ক্লায়েন্ট তৈরি নীচে দেওয়া হয়েছে

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

আপডেট ডিসেম্বর 2019 আয়নিক - 4.7.1

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

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

অনুগ্রহ করে উপরের সামগ্রীটি অ্যান্ড্রয়েড ম্যানিফেস্ট। 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. CordovaLib → টেপা → AndroidManifest.xml

    এখন আবার গ্রেড তৈরির চেষ্টা করুন এবং এখন এটি সফলভাবে তৈরি হয়

  5. আপনার অ্যাপ্লিকেশন → ম্যানিফেস্ট in এ অ্যাপ্লিকেশন ট্যাগে নিম্নলিখিতটি রয়েছে তা নিশ্চিত করুন Androidmanifest.xml:

    <application
    android:networkSecurityConfig="@xml/network_security_config"  android:usesCleartextTraffic="true" >
  6. খুলুন 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">xxx.yyyy.com</domain>
        </domain-config>
    </network-security-config>

xxx.yyyy.comআপনার HTTP API এর লিঙ্কটি এখানে । ইউআরএল এর আগে আপনি কোনও এইচটিটিপি অন্তর্ভুক্ত করবেন না তা নিশ্চিত করুন।

দ্রষ্টব্য: এখন অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে অ্যাপ্লিকেশনটি তৈরি করুন (বিল্ড করুন - বান্ডিলের / APK তৈরি করুন - APK তৈরি করুন) এবং এখন আপনি সেই অ্যাপটি ব্যবহার করতে পারেন এবং এটি অ্যান্ড্রয়েড পাইতে দুর্দান্ত কাজ করে works আপনি যদি আয়নিক কর্ডোভা বিল্ড অ্যান্ড্রয়েড ব্যবহার করে অ্যাপ্লিকেশন তৈরির চেষ্টা করেন তবে এটি এই সমস্ত সেটিংসকে ওভাররাইড করে তাই আপনি প্রকল্পটি তৈরি করতে অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছেন তা নিশ্চিত করুন।

আপনার যদি অ্যাপ্লিকেশনটির কোনও পুরানো সংস্করণ ইনস্টল করা থাকে তবে সেগুলি আনইনস্টল করুন এবং একবার চেষ্টা করুন বা অন্যথায় আপনার কিছু ত্রুটি থাকবে:

অ্যাপ ইনস্টল করা হয়নি


আয়নের? মধ্যে Cordova? সুতরাং এটি কোনও সাধারণ অ্যান্ড্রয়েড বিল্ড নয়, বরং এর পরিবর্তে ফ্রন্ট এন্ড টেকের সাহায্যে নেটিভ অ্যাপ্লিকেশন তৈরির কাঠামো
উইকেন্ড

আয়নিক অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে আপনাকে ওয়েবভিউ বাস্তবায়ন সরবরাহ করে এবং কর্ডোভা আপনাকে মাইক্রোফোন, ক্যামেরার মতো অ্যান্ড্রয়েড নেটিভ বৈশিষ্ট্যগুলি অ্যাক্সেস করতে সহায়তা করে।
জিভিএস আখিল

3

ফাইল তৈরি করুন - রেজ / এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি.এক্সএমএল

নেটওয়ার্ক_সিকিউরিটি.এক্সএমএল -> এ

<?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">

3

এটি নিরাপত্তাজনিত কারণে করা হয়, আপনি সর্বদা HTTPS (HTTP সিকিউর ) যেখানেই সম্ভব ব্যবহার করা পছন্দ করবেন ।
আপনি এটি সম্পর্কে আরও পড়তে পারেন এখানে

আপনার অবস্থার উপর নির্ভর করে এই সমস্যার জন্য একাধিক সমাধান রয়েছে।

আপনি যদি প্রথম পক্ষের পরিষেবার সাথে যোগাযোগ করার চেষ্টা করছেন, IE: আপনার নিজের ওয়েব সার্ভার

সার্ভারের দিক: আপনার সেই সার্ভারে HTTPS সমর্থন যুক্ত করা উচিত এবং HTTP এর পরিবর্তে HTTPS ব্যবহার করা উচিত। আজকাল আপনি এমনকি মত মুক্ত ব্যবহার পরিষেবার জন্য এটা করতে পারেন LetsEncrypt এবং অন্যদের
ক্লায়েন্ট সাইড: আপনি ব্যবহার করে থাকেন HttpURLConnectionথেকে java.netপ্যাকেজ আপনাকে সুইচ করতে পারেন HttpsURLConnectionএরjava.net.ssl প্যাকেজ, এটি একটি অনুরূপ যদি না অভিন্ন এপিআই আছে, তাই সুইচ অনায়াস হওয়া উচিত।

আপনি যদি গুগল, ফেসবুক, একটি আবহাওয়া পরিষেবা ইত্যাদির মতো কোনও তৃতীয় পক্ষের পরিষেবা ব্যবহার করে থাকেন If

যদি সেবা আপনি সমর্থন HTTPS এর সাথে যোগাযোগ করছেন (যা এটা সম্ভবত আছে) আপনি শুধু আপনার অনুরোধ URL থেকে পরিবর্তন করতে পারেন যে http://abc.xyzকরতে https://abc.xyz

শেষ অবলম্বন হিসাবে, আপনি যে তৃতীয় পক্ষের সাথে যোগাযোগ করতে চান সে পরিষেবা যদি এইচটিটিপিএস বা অন্য কোনও সুরক্ষিত যোগাযোগকে সমর্থন করে না, আপনি এই উত্তরটি ব্যবহার করতে পারেন , তবে আবার, এটি প্রস্তাবিত নয় কারণ এটি এটি খুব প্রয়োজনীয় উদ্দেশ্যে হেরে যায় সুরক্ষা বৈশিষ্ট্য।


2

আমার ক্ষেত্রে সেই URL টি ব্রাউজারেও কাজ করছে না।

আমি https://www.google.com/ দিয়ে পরীক্ষা করি

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

এবং এটা আমার জন্য কাজ করে।


myWebView.loadUrl ( "www.site.com"); এটি ওয়েবমাস্টারদের জন্যও কাজ করে যা এইচটিটিপিএস হিসাবে এসএসএল নয় তবে কেবল এইচটিটিপি রয়েছে। খালি পৃষ্ঠা পেতে পারেন।
বে

যদি প্রদত্ত ইউআরএলটি আপনার ওয়েব ব্রাউজারে কাজ করা হয় তবে আপনি নিজের ওয়েবভিউতে ব্যবহার করতে পারেন। অন্যথায় আপনি এই ত্রুটি দেখতে পারেন।
ময়ূরেশ দেশমুখ

আমি জানি মাঝে মাঝে এটি একটি ত্রুটি দেয় তবে বেশিরভাগ সময় খালি পৃষ্ঠাটি এমনকি রানও হয় দেখি avas জাভাস্ক্রিপ্টটি "সত্য" এবং আমি ওয়েবসাইটটি সঠিকভাবে অ্যাক্সেস করতে পারি। আমি জানি না কেন আমি ফাঁকা পৃষ্ঠা দেখি, আমি জুম-সক্ষমটিকেও সত্য করে দিয়েছি।
বে

2

স্রেফ অ্যান্ড্রয়েড যুক্ত করুন: অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলের অভ্যন্তরেCCialtextTraffic = "সত্য" ব্যবহার করুন


2

জন্য Xamarin.Android বিকাশকারীরা নিশ্চিত করুন যে এইচটিপিপ্লিয়েন্ট বাস্তবায়ন এবং এসএসএল / টিএলএস ডিফল্টে সেট করা আছে।

এটি Andorid বিকল্প -> উন্নত অ্যান্ড্রয়েড বিকল্পের অধীনে পাওয়া যাবে।

এখানে চিত্র বর্ণনা লিখুন


2

কার্যকারী উত্তরটি যখন আমার কাছে ছিল তখন এটি ছিল পাবলো সিগারার দ্বারা:

<?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>

এই কোডটি আমার পক্ষে কাজ করছে, তবে আমার অ্যাপ্লিকেশনটির জন্য কেবলমাত্র বই.google.com.com থেকে ডেটা পুনরুদ্ধার করা দরকার। এইভাবে সুরক্ষা সতর্কতা অদৃশ্য হয়ে যায়।


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 পদক্ষেপ: -> ম্যানিফেস্টটি ম্যানিফেস্ট অ্যাপ্লিকেশন ট্যাগের অভ্যন্তরে add

<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 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>

এটি কি অ্যাওসপিতে পরিবর্তন করা সম্ভব?
শ্যাডো

@ শ্যাডো হ্যাঁ আপনি এটি পরিবর্তন করতে পারেন।
আশিফ

আমি কোথায় এটি পরিবর্তন করতে পারি জানতে পারি?
শ্যাডো

@ শ্যাডো <বেস-কনফিগার ক্লিয়ারটেক্সট ট্র্যাফিরমিটেড = "ট্রু"> <স্ট্রাস্ট-এনচর্স> <সার্টিফিকেট src = "সিস্টেম" /> </trust-anchors> </base-config> <ডোমেন-কনফিগার ক্লিয়ারটেক্সট ট্র্যাফিরমিট = "সত্য"> <ডোমেন অন্তর্ভুক্ত সুডোমাইনস = "সত্য"> www.yourwebsidedomain.com </domain> </domain-config>
আশিফ

কোন !! আবার আপনি আবেদনের পক্ষ থেকে বলছেন। আমি জিজ্ঞাসা করছি ফ্রেমওয়ার্ক </> ফোল্ডার শ্রেণিতে কীভাবে পরিবর্তন করবেন?
শাদো

1

রিয়েট নেটিভ 0.58.5 বা উচ্চতর সংস্করণে আপগ্রেড করুন। তারা আছে includeSubdomainআরএন 0.58.5 তাদের কনফিগ ফাইলে।

পরিবর্তণের

আরএন 0.58.5 এ তারা network_security_configতাদের সার্ভার ডোমেন দিয়ে ঘোষণা করেছে। নেটওয়ার্ক সুরক্ষা কনফিগারেশন একটি অ্যাপ্লিকেশনকে একটি নির্দিষ্ট ডোমেন থেকে ক্লিয়ারটেক্সট ট্র্যাফিকের অনুমতি দেওয়ার অনুমতি দেয়। সুতরাং android:usesCleartextTraffic="true"আপনার মেনিফেস্ট ফাইলের অ্যাপ্লিকেশন ট্যাগে ঘোষণা করে অতিরিক্ত প্রচেষ্টা করার দরকার নেই । আরএন সংস্করণ আপগ্রেড করার পরে এটি স্বয়ংক্রিয়ভাবে সমাধান হবে।


1

পরিবর্তিত এপিআই সংস্করণ 9.0 এর পরে ত্রুটি পেয়েছে ক্লিয়ারটেক্সট এইচটিটিপি আপনার ট্রাফিকটি আপনার- API.DOMAIN.COM- এ অনুমোদিত নয় (টার্গেটএসডিভি ভার্সন = "28")। xamarin, xamarin.android এবং অ্যান্ড্রয়েড স্টুডিওতে।

Xamarin, xamarin.android এবং অ্যান্ড্রয়েড স্টুডিওতে এই ত্রুটিটি সমাধান করার জন্য দুটি পদক্ষেপ।

পদক্ষেপ 1: ফাইল সংস্থান তৈরি করুন / এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল

নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল এ

<?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: AndroidManLive.xML আপডেট করুন -

অ্যান্ড্রয়েড যুক্ত করুন: অ্যাপ্লিকেশন ট্যাগে নেটওয়ার্কসিকিউরিটি কনফিগ = "@ এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি_কনফিগ"। উদাহরণ:

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

1

শিরোনামে এই পরামিতিটি যুক্ত করে আমার সমস্যাটি এপিউস প্রতিক্রিয়া নেটিভে সমাধান করেছে

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

1

আপনি যদি আয়নিক ব্যবহার করছেন এবং নেটিভ HTTP প্লাগইন চলাকালীন এই ত্রুটিটি পেয়ে থাকেন তবে নিম্নলিখিত ফিক্সটি করা দরকার-

যাও 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>

আমার জন্য কাজ!


1

অ্যান্ড্রয়েড যুক্ত করা হচ্ছে ... আপনার ক্লাসিফিক ফাইলটিতে "সত্য" ... ব্যবহার করে ক্লিয়ারটেক্সটট্রাফিকে সমস্যাটি সমাধান করতে দেখা যেতে পারে তবে এটি ডেটা অখণ্ডতার জন্য হুমকি উন্মুক্ত করে।

সুরক্ষার কারণে আমি অ্যান্ড্রয়েডের সাথে ম্যানিফেস্ট প্লেसहোল্ডার ব্যবহার করেছি : ম্যানিফেস্ট ফাইলের অভ্যন্তরে ক্লিমেটেক্সট ট্র্যাফিজি (যেমন গৃহীত উত্তরের বিকল্প 3 যেমন @ হৃষীকেশ কদম প্রতিক্রিয়া) কেবলমাত্র ডিবাগ পরিবেশের স্পষ্ট পাঠ্যকে অনুমতি দেওয়ার জন্য।

আমার বিল্ড.gradle (: অ্যাপ্লিকেশন) ফাইলের অভ্যন্তরে আমি এর মতো ম্যানিফেস্ট প্লেসোল্ডার যুক্ত করেছি:

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

        debug {
            manifestPlaceholders.cleartextTrafficPermitted ="true"
        }
    }

উপরের এই লাইনে স্থানধারকের নাম ক্লিয়ারটেক্সট ট্র্যাফিকপ্রাপ্ত নোট করুন

            manifestPlaceholders.cleartextTrafficPermitted ="true"

তারপরে আমার অ্যান্ড্রয়েড ম্যানিফেস্টে, আমি একই স্থানধারকটি ব্যবহার করেছি ...

AndroidManLive.xML -

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

এটির সাথে, ক্লিয়ারটেক্সট ট্র্যাফিক কেবল ডিবাগ পরিবেশের অধীনে অনুমোদিত।


0

ক্লিয়ারটেক্সট হ'ল এমন কোনও সংক্রমণিত বা সঞ্চিত তথ্য যা এনক্রিপ্ট করা হয় না বা এনক্রিপ্ট করা হতে পারে।

যখন কোনও অ্যাপ্লিকেশন কোনও ক্লিয়ারটেক্সট নেটওয়ার্ক ট্র্যাফিক যেমন এইচটিটিপি ( https নয় ) ব্যবহার করে সার্ভারের সাথে যোগাযোগ করে , তখন এটি হ্যাকিং এবং বিষয়বস্তুতে টেম্পারিংয়ের ঝুঁকি বাড়িয়ে তোলে। তৃতীয় পক্ষগুলি ব্যবহারকারীদের সম্পর্কে অননুমোদিত ডেটা বা তথ্য ফাঁস করতে পারে। এজন্য বিকাশকারীরা কেবল এইচটিটিপিএসের মতো ট্র্যাফিক সুরক্ষিত করতে উত্সাহিত করা হয়। এই সমস্যাটি কীভাবে সমাধান করা যায় তার বাস্তবায়ন এবং রেফারেন্সটি এখানে



0

আমি কর্ডোভা-প্লাগইন-হোয়াইটলিস্ট 1.3.4 এর সাথে কর্ডোভা 8 ব্যবহার করেছি এবং এটি ডিফল্ট কনফিগারেশনে আমার অ্যাপ্লিকেশনটিতে ইন্টারনেট অ্যাক্সেস নেই এবং আমি কেবল ম্যানিফেস্টে। Xml -> অ্যান্ড্রয়েডে: একটি প্যারামিটার যুক্ত করেছি : ক্লিরিটেক্সটট্রাফি = "সত্য"

কর্ডোভা 8 এ মেনফেস্টের পথটি পরিবর্তিত হয়েছে: প্ল্যাটফর্ম / অ্যান্ড্রয়েড / অ্যাপ / এসসিআর / প্রধান / অ্যান্ড্রয়েডম্যানিফিসিট.এক্সএমএল।

 <?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>

এটি সত্যই বোকা কারণ এটি স্পষ্ট করে যে আপনার অ্যাপ্লিকেশনটির ইন্টারনেট অ্যাক্সেস প্রয়োজন ....


0

সহজ এবং সহজ সমাধান [জামারিন ফর্ম]

অ্যান্ড্রয়েডের জন্য

  1. যান Android Project, তারপরে ক্লিক করুন Properties,

এখানে চিত্র বর্ণনা লিখুন

  1. AssemblyInfo.csএই কোডটি এখনই খুলুন এবং আটকান:

    [assembly: Application(UsesCleartextTraffic =true)]

এখানে চিত্র বর্ণনা লিখুন

আইওএসের জন্য

ব্যবহার NSAppTransportSecurity:

এখানে চিত্র বিবরণ লিখুন

আপনার ফাইলটিতে অভিধানের আওতায় NSAllowsArbitraryLoadsকীটি সেট করতে হবে।YESNSAppTransportSecurityinfo.plist

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

প্লিস্ট কনফিগারেশন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.