پرش به محتوا

آموزش پروتکل HTTP و HTTPS در فلاتر

    HTTP و HTTPS دو پروتکل مهم در ارتباط با سرور هستند. در این درس به پروتکل‌ ها و نحوه استفاده از آن‌ها در فلاتر پرداخته شده است.

    پروتکل HTTP: HTTP یا "Hypertext Transfer Protocol" یک پروتکل است که برای ارسال اطلاعات از وب سرور به مرورگر و برعکس، استفاده می‌شود. در این پروتکل، اطلاعات به صورت پیغام‌هایی به نام "request" و "response" ارسال می‌شود. برای ارسال request از متدهای مختلفی مانند GET، POST، PUT و DELETE استفاده می‌شود.

    در فلاتر، برای ارسال درخواست HTTP از پکیج http استفاده می‌شود. با استفاده از این پکیج، می‌توانید درخواست‌هایی مانند GET و POST را برای ارتباط با سرور ارسال کنید و پاسخ‌های دریافتی را پردازش کنید. به طور مثال:

    import 'package:http/http.dart' as http;
    
    void main() async {
      var response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts'));
      print(response.statusCode);
      print(response.body);
    }
    
    

    در مثال قبل یک درخواست GET به آدرس https://jsonplaceholder.typicode.com/posts ارسال می‌شود و پاسخ دریافتی در خط دوم چاپ می‌شود. پکیج http از async و await برای ارسال درخواست‌هایی که نیاز به انتظار برای دریافت پاسخ دارند، استفاده می‌کند.

    پروتکل HTTPS: HTTPS یا "Hypertext Transfer Protocol Secure" نسخه امن شده‌ی پروتکل HTTP است. در این پروتکل، ارتباط بین سرور و مرورگر با استفاده از یک پروتکل امن‌سازی شده مانند SSL یا TLS برقرار می‌شود. با استفاده از HTTPS، اطلاعات بین مرورگر و سرور به صورت رمزگذاری شده ارسال می‌شوند و این اجازه می‌دهد که حریم خصوصی کاربر حفظ شود.

    در فلاتر برای ارسال درخواست HTTPS از پکیج http می‌توانید استفاده کنید. برای این کار، باید یک شیء از نوع Client با پارامتر https بسازید. به طور مثال:

    import 'package:http/http.dart' as http;
    
    void main() async {
      var url = Uri.parse('https://jsonplaceholder.typicode.com/posts');
      var client = http.Client();
      var response = await client.get(url);
      print(response.statusCode);
      print(response.body);
      client.close();
    }
    
    

    در مثال قبل یک شیء از نوع http.Client ساخته شده است و از آن برای ارسال درخواست HTTPS به آدرس https://jsonplaceholder.typicode.com/posts استفاده شده است. پاسخ دریافتی نیز در خطوط سوم و چهارم چاپ می‌شود.

    نکته: برای استفاده از HTTPS، باید از SSL اعتبار سنجی شده استفاده کنید. بهترین راه برای این کار استفاده از یک گواهینامه SSL معتبر است. معمولاً این گواهینامه‌ها توسط سازمان‌هایی مانند Let's Encrypt ارائه می‌شوند.

    در اینجا یک مثال از ارسال درخواست HTTPS با گواهینامه SSL معتبر ارائه شده است:

    import 'dart:io';
    import 'package:http/http.dart' as http;
    
    void main() async {
      var url = Uri.parse('https://www.google.com');
      var client = http.Client();
      try {
        var response = await client.get(url);
        print(response.statusCode);
        print(response.body);
      } on SocketException catch (e) {
        print("Error: $e");
      }
      client.close();
    }
    
    

    در مثال قبل یک شیء از نوع http.Client ساخته شده و از آن برای ارسال درخواست HTTPS به آدرس https://www.google.com استفاده شده است. این درخواست به دلیل اینکه گواهینامه SSL معتبری دارد، با موفقیت انجام می‌شود و پاسخ دریافتی چاپ می‌شود. اگر گواهینامه SSL معتبر نباشد، درخواست ارسالی با خطا مواجه خواهد شد.

    همانطور که گفته شد HTTPS یک پروتکل امنیتی است و برای ارسال درخواست HTTPS باید از یک گواهینامه SSL معتبر استفاده کنید. برای استفاده از گواهینامه‌های SSL در فلاتر، می‌توانید از پکیج dart:io استفاده کنید. برای این کار، باید یک شیء از نوع SecurityContext ساخته و گواهینامه‌های مورد نیاز را به آن اضافه کنید. به طور مثال:

    import 'dart:io';
    import 'package:http/http.dart' as http;
    
    void main() async {
      var url = Uri.parse('https://www.google.com');
      var client = http.Client();
      var context = SecurityContext();
      context.setTrustedCertificates('path/to/certificate.pem');
      client = http.Client(context: context);
      try {
        var response = await client.get(url);
        print(response.statusCode);
        print(response.body);
      } on SocketException catch (e) {
        print("Error: $e");
      }
      client.close();
    }
    
    

    در این مثال قبل ابتدا یک شیء از نوع http.Client ساخته شده و به متغیر client اختصاص داده شده است. سپس یک شیء از نوع SecurityContext ساخته و گواهینامه‌های مورد نیاز برای اتصال به آدرس https://www.google.com به آن اضافه شده است. در نهایت، یک شیء جدید از http.Client با پارامتر context برابر با context ساخته شده و به متغیر client اختصاص داده شده است. سپس درخواست HTTPS به آدرس https://www.google.com با استفاده از شیء client ارسال می‌شود.

    در این مثال، گواهینامه SSL از یک فایل محلی به نام certificate.pem بارگیری شده است. شما می‌توانید گواهینامه SSL معتبر خود را به جای path/to/certificate.pem قرار دهید.

    توجه کنید که برای اضافه کردن گواهینامه‌های SSL به شیء SecurityContext، می‌توانید از دو متد setTrustedCertificates و setClientAuthorities استفاده کنید.

    توجه کنید که برای اضافه کردن گواهینامه‌های SSL به شیء SecurityContext، می‌توانید از دو متد setTrustedCertificates و setClientAuthorities استفاده کنید. setTrustedCertificates برای اضافه کردن گواهینامه‌های اعتماد مورد نیاز برای برقراری ارتباط SSL با یک سرور استفاده می‌شود. setClientAuthorities هم برای اضافه کردن گواهینامه‌های اعتبارسنجی کاربر به یک SecurityContext استفاده می‌شود.

    در صورتی که قصد دارید با استفاده از یک گواهینامه SSL امنیتی، درخواست HTTPS را به یک سرور خود ارسال کنید، می‌توانید از گواهینامه‌های SSL رایگانی مانند Let's Encrypt که به راحتی در سی پنل فعال میشود استفاده کنید.

    5/5 - ( 1 امتیاز )

    دیدگاه شما نگاه ما رو عوض میکنه !

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    پشتیبانی آنلاین