آموزش Cors در گوگل AMP

3 سال پیش

آموزش Cors در گوگل AMP

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش Cors در گوگل AMP خواهیم پرداخت.

در این فصل سعی خواهیم کرد CORS را در AMP درک کنیم. قبل از اینکه بیشتر به جزئیات بپردازیم ، اجازه دهید ما اصول CORS و نحوه مفید بودن آن را درک کنیم.

CORS چیست؟

CORS مخفف Cross Origin Resource Sharing است. CORS فرایندی است که به داده های سرآیند HTTP اضافی نیاز دارد تا به مرورگر اطلاع دهد که آیا درخواستی که از طریق صفحه وب موجود در say xyz.com به آدرس اینترنتی ارسال شده است ، اجازه دسترسی به داده ها از آدرس اینترنتی درخواستی را دارد. ما درخواستهای http زیادی از صفحه وب ارائه می دهیم و برای این منظور باید CORS در اختیار داشته باشیم تا داده های مورد نیاز را بدست آوریم.

وقتی از سرور متفاوتی از میزبان درخواست http می کنیم ، آن را به عنوان درخواست cross origin می نامیم که به این معنی است که دامنه ، پروتکل و درگاه با مبدأ میزبان متفاوت است. در چنین شرایطی، برای دسترسی به داده ها باید از آدرس اینترنتی درخواست شده مجوز داده شود. به این معنی است که درخواست GET / PUT / POST / DELETE انجام شده است.

این داده های اضافی در هدر مرورگر برای تماس درخواست درخواست http موجود است. این مرحله اجازه اساساً به دلایل امنیتی لازم است تا هیچ صفحه وب بدون اجازه لازم نتواند از دامنه دیگری داده ایجاد یا دریافت کند.

هدر مرورگر باید دارای جزئیاتی مانند Access-Control-Allow-Origin باشد که می تواند مقادیری را داشته باشد که در زیر نشان داده شده است –

Access-Control-Allow-Origin : *

 

داشتن مقدار * برای عنوان URL درخواست به معنای این است که به مرورگرها می گوید اجازه دسترسی به منبع را برای درخواست داده ها از هر مبدا فراهم می کنند.

Access-Control-Allow-Origin: https://www.example.com

 

داشتن مقادیر فوق به مرورگر می گوید که درخواستی که از صفحه وب www.example.com ارائه شده است فقط مجاز به دریافت داده برای آدرس اینترنتی درخواستی است.

پیکربندی سرور برای CORS باید با در نظر گرفتن نحوه استفاده از داده های به اشتراک گذاشته شده انجام شود. بسته به این ، سرصفحه های مورد نیاز باید در سمت سرور تنظیم شوند.

حالا که دانستیم CORS چیست، بگذارید یک قدم دیگر جلو برویم. در مورد amp، ما مولفه هایی مانند amp-form ، amp-list داریم که از نقاط انتهایی http برای بارگذاری پویا داده ها استفاده می کند.

در مورد صفحات amp، حتی اگر درخواست http از همان مبدا ساخته شده باشد، ما باید تنظیمات CORS را در محل خود داشته باشیم. سوالاتی در اینجا بوجود می آیند – چرا ما باید CORS را فعال کنیم حتی اگر درخواست و پاسخ از همان منشا گرفته شود. از نظر فنی ما در چنین شرایطی نیازی به CORS نداریم زیرا ما درخواست داده و نمایش داده برای همان دامنه ، مبدا و غیره را داریم.

Amp از ویژگی هایی به نام caching برخوردار است که برای دستیابی سریعتر داده ها به کاربری که به صفحه وارد می شود اضافه می شود. درصورتی که کاربر قبلاً از صفحه بازدید کرده باشد ، داده ها در google cdn ذخیره می شوند ، کاربر بعدی داده های ارائه شده از حافظه پنهان را دریافت می کند.

داده ها در پایان amp ذخیره می شوند که اکنون دامنه دیگری دارد. وقتی کاربر برای به دست آوردن داده های جدید روی هر دکمه ای کلیک می کند، آدرس URL cache amp با دامنه صفحه وب مقایسه می شود تا داده های جدید را دریافت کند. در اینجا اکنون اگر CORS فعال نباشد زیرا با آدرس اینترنتی cached amp و دامنه صفحه وب سروکار دارد درخواست معتبر نخواهد بود و برای مجوز CORS ناموفق خواهد بود. به همین دلیل است که ما نیاز به فعال کردن CORS حتی برای همان منبع در مورد صفحه های آمپر داریم.

نمونه ای از کار با فرمهایی که CORS فعال است در اینجا نشان داده شده است –

<!doctype html>
<html amp lang = "en">
   <head>
      <meta charset = "utf-8">
      <script async src = "https://cdn.ampproject.org/v0.js">
      </script>
      <title>Google AMP - Form</title>
      <link rel = "canonical" href = "ampform.html">
      <meta name = "viewport" content = "width = device-width,
      minimum-scale = 1,initial-scale = 1">
      
      <style amp-boilerplate>
         body{
            -webkit-animation:
            -amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:
            -amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:
            -amp-start 8s steps(1,end) 0s 1 normal both;animation:
            -amp-start 8s steps(1,end) 0s 1 normal both
         }
         @-webkit-keyframes 
         -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes 
         -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes 
         -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes 
         -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes 
         -amp-start{from{visibility:hidden}to{visibility:visible}}
      </style>
      <noscript>
         <style amp-boilerplate>
            body{
               -webkit-animation:none;
               -moz-animation:none;
               -ms-animation:none;
               animation:none}
         </style>
      </noscript>
      <script async custom-element = "amp-form" 
         src = "https://cdn.ampproject.org/v0/amp-form-0.1.js">
      </script>
      <script async custom-template = "amp-mustache" 
         src = "https://cdn.ampproject.org/v0/amp-mustache-0.2.js">
      </script>
      <style amp-custom>
         form.amp-form-submit-success [submit-success],
         form.amp-form-submit-error [submit-error]{
            margin-top: 16px;
         }
         form.amp-form-submit-success [submit-success] {
            color: white;
            background-color:gray;
         }
         form.amp-form-submit-error [submit-error] {
            color: red;
         }
         form.amp-form-submit-success.hide-inputs > input {
            display: none;
         }
      </style>
   </head>
   <body>
      <h3>Google AMP - Form</h3>
      <form 
         method = "post" 
         class = "p2" 
         action-xhr = "submitform.php" 
         target = "_top">
            <p>AMP - Form Example</p>
            <div>
               <input 
                  type = "text" 
                  name = "name" 
                  placeholder = "Enter Name" required>
               <br/>
               <br/>
               <input 
                  type = "email" 
                  name = "email" 
                  placeholder = "Enter Email" 
                  required>
               <br/>
               <br/>
            </div>
            <input type = "submit" value = "Submit">
            <div submit-success>
               <template type = "amp-mustache">
                  Form Submitted! Thanks {{name}}.
               </template>
            </div>
            <div submit-error>
               <template type = "amp-mustache">
                  Error! {{name}}, please try again.
               </template>
            </div>
      </form>
   </body>
</html>

 

submitform.php

<?php
   if(!empty($_POST)){
      $domain_url = (isset($_SERVER['HTTPS']) ? "https" : "http") . 
         "://$_SERVER[HTTP_HOST]";
      header("Content-type: application/json");
      header("AMP-Access-Control-Allow-Source-Origin: " . $domain_url);
      header("Access-Control-Expose-Headers: 
         AMP-Access-Control-Allow-Source-Origin");
      $myJSON = json_encode($_POST);
      echo $myJSON;
   }
?>

 

خروجی

 

Submitform
جزئیات عناوین پاسخ به submitform.php اضافه شده است –

Response Submitform
برای کارکرد فرم ، باید عناوینی مانند دسترسی کنترل کنترل-افشا-سربرگ با مقدار AMP-Access-Control-Allow-Source-Origin و amp-access-control-allow-source-origin – http: // localhost اضافه کنیم : ۸۰۸۰٫

در اینجا ما از فایل php استفاده می کنیم و apache سرور مورد استفاده است. در فایل php ، عناوین مورد نیاز را مانند تصویر زیر اضافه کرده ایم –

<?php
   if(!empty($_POST)){
      $domain_url = (isset($_SERVER['HTTPS']) ? "https" : "http") .
         "://$_SERVER[HTTP_HOST]";
      header("Content-type: application/json");
      header("AMP-Access-Control-Allow-Source-Origin: " . $domain_url);
      header("Access-Control-Expose-Headers: 
         AMP-Access-Control-Allow-Source-Origin");
      $myJSON = json_encode($_POST);
      echo $myJSON;
   }
?>

 

وقتی عناوین مورد نیاز اضافه می شوند ، منشا http: // localhost: 8080 اجازه تعامل و بازگرداندن داده ها را خواهد داشت.

 

منبع.

لیست جلسات قبل آموزش گوگل AMP

  1. آموزش گوگل AMP
  2. بررسی اجمالی گوگل AMP
  3. مقدمه گوگل AMP
  4. آموزش تصاویر در گوگل AMP
  5. آموزش فرم در گوگل AMP
  6.  آموزش Iframes در گوگل AMP
  7. آموزش ویدیو در گوگل AMP
  8. آموزش دکمه در گوگل AMP
  9. آموزش Timeago در گوگل AMP
  10. آموزش Mathml در گوگل AMP
  11. آموزش تگ Fit Text در گوگل AMP
  12. آموزش شمارش معکوس تاریخ در گوگل AMP
  13. آموزش انتخاب کننده تاریخ در گوگل AMP
  14. آموزش استوری در گوگل AMP
  15. آموزش انتخاب کننده در گوگل AMP
  16. آموزش لینک در گوگل AMP
  17. آموزش فونت در گوگل AMP
  18. آموزش لیست در گوگل AMP
  19. آموزش اعلان کاربر در گوگل AMP
  20. آموزش next page در گوگل AMP
  21. آموزش ویژگی ها در گوگل AMP
  22. آموزش استایل ها و CSS سفارشی در گوگل AMP
  23. آموزش کلاس های CSS پویا در گوگل AMP
  24. آموزش اکشن ها و رویدادها در گوگل AMP
  25. آموزش انیمیشن در گوگل AMP
  26. آموزش اتصال داده در گوگل AMP
  27. آموزش طرح بندی در گوگل AMP
  28. آموزش تبلیغات در گوگل AMP
  29. آموزش تجزیه و تحلیل در گوگل AMP
  30. آموزش ویجت های اجتماعی در گوگل AMP
  31. آموزش نحو در گوگل AMP
  32. آموزش اعتبار سنجی در گوگل AMP
  33. آموزش اجزا جاوا اسکریپت در گوگل AMP
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه