$lang['tuto'] = "سبق"; ?> ReactJS: کروم CORS پلگ ان کو شامل کرنے

ReactJS: کروم CORS پلگ ان کو شامل کرنے کے بعد، Unhandled Rejected (TypeError) بازیافت کرنے میں ناکام

Temp mail SuperHeros
ReactJS: کروم CORS پلگ ان کو شامل کرنے کے بعد، Unhandled Rejected (TypeError) بازیافت کرنے میں ناکام
ReactJS: کروم CORS پلگ ان کو شامل کرنے کے بعد، Unhandled Rejected (TypeError) بازیافت کرنے میں ناکام

رد عمل میں API کی خرابیوں کو سنبھالنا: CORS پلگ ان چیلنجز

میں APIs کے ساتھ کام کرتے وقت ReactJS، ڈویلپرز کو اکثر ڈیٹا کی بازیافت سے متعلق مختلف چیلنجوں کا سامنا کرنا پڑتا ہے، خاص طور پر جب فریق ثالث APIs کے ساتھ کام کرتے ہیں۔ ایک عام مسئلہ جو پیدا ہوتا ہے وہ ہے "Unhandled Rejection (TypeError): Failed to fetch" ایرر۔ یہ خرابی اس وقت بھی ہو سکتی ہے جب مقبول APIs جیسے Swiggy's restaurant list API، جسے بہت سے ڈویلپر اپنی ویب ایپلیکیشنز کو بڑھانے کے لیے استعمال کرتے ہیں۔

اس صورت میں، CORS کروم ایکسٹینشن کو شامل کرنا براؤزر کی پابندی والی پالیسیوں کو نظرانداز کرنے کے لیے ایک قابل عمل حل کی طرح لگتا ہے۔ تاہم، یہ مسئلہ کو حل کرنے کے بجائے نئی پیچیدگیوں کو متعارف کر سکتا ہے. اگر آپ اپنے ڈیولپمنٹ ماحول میں CORS پلگ ان استعمال کر رہے ہیں، اور آپ کی API کی درخواستیں لوڈ ہونے کے فوراً بعد ناکام ہو جاتی ہیں، تو ہو سکتا ہے کہ آپ ایک ایسے مسئلے کا شکار ہو جائیں جہاں پلگ ان براؤزر کے درخواست سے نمٹنے کے رویے سے متصادم ہو۔

کراس اوریجن درخواستوں کا نظم کرنے اور ٹربل شوٹ کرنے کا طریقہ سمجھنا CORS کی غلطیاں ReactJS میں ترقی کے ہموار عمل کے لیے ضروری ہے۔ Swiggy's جیسے APIs میں اکثر حفاظتی پرتیں ہوتی ہیں، جیسے CORS، غیر مجاز کلائنٹس سے رسائی کو کنٹرول کرنے کے لیے۔ یہ پابندیاں غلطیاں پیدا کر سکتی ہیں جن کو ٹھیک طریقے سے حل کرنے کی ضرورت ہے۔

اس گائیڈ میں، ہم دریافت کریں گے کہ یہ خرابی کیوں پیش آتی ہے، خاص طور پر کروم میں CORS پلگ ان شامل کرنے کے بعد۔ ہم آپ کے میں Swiggy API کے ساتھ کام کرتے ہوئے اسے حل کرنے کی حکمت عملیوں پر بھی بات کریں گے۔ رد عمل ایپلی کیشنز

حکم استعمال کی مثال
fetch() یہ کمانڈ Swiggy API کو HTTP درخواستیں کرنے کے لیے استعمال ہوتی ہے۔ یہ وسائل کو متضاد طور پر لاتا ہے اور ایک وعدہ واپس کرتا ہے، جو ایک رسپانس آبجیکٹ کو حل کرتا ہے۔ API سے ریستوراں کے ڈیٹا کو بازیافت کرنے کے لئے یہ کلیدی ہے۔
useEffect() React میں استعمال کیا جاتا ہے، یہ ہک اجزاء کو پیش کرنے کے بعد API کالز جیسے ضمنی اثرات کے نفاذ کی اجازت دیتا ہے۔ یہ یقینی بناتا ہے کہ جزو کے نصب ہونے کے بعد Swiggy کے API پر بازیافت کی درخواست کی جاتی ہے۔
res.setHeader() یہ ایکسپریس کمانڈ حسب ضرورت HTTP ہیڈر سیٹ کرتی ہے، جیسے رسائی-کنٹرول-اجازت-اصل، جو CORS ہینڈلنگ میں اہم ہے۔ یہ بیک اینڈ کو کسی بھی اصل سے درخواستوں کی اجازت دینے کے قابل بناتا ہے، CORS کی غلطیوں کو روکتا ہے۔
res.json() یہ طریقہ کلائنٹ کو JSON جواب واپس بھیجنے کے لیے استعمال کیا جاتا ہے۔ پراکسی سرور کے حل میں، یہ یقینی بناتا ہے کہ Swiggy سے حاصل کیا گیا API ڈیٹا JSON فارمیٹ کے طور پر واپس کیا جائے، جسے سامنے والا حصہ آسانی سے استعمال کر سکتا ہے۔
await یہ کلیدی لفظ غیر مطابقت پذیر فنکشن کے عمل کو اس وقت تک روکتا ہے جب تک کہ بازیافت آپریشن حل نہ ہو جائے، اس بات کو یقینی بناتا ہے کہ کوڈ آگے بڑھنے سے پہلے API کے ڈیٹا کا انتظار کرتا ہے، غیر ہینڈل شدہ مستردوں کو روکتا ہے۔
express() دی ایکسپریس() فنکشن کا استعمال ایکسپریس سرور کی مثال بنانے کے لیے کیا جاتا ہے۔ یہ سرور ڈیٹا حاصل کرنے کے دوران CORS کے مسائل کو روکنے کے لیے فرنٹ اینڈ اور Swiggy API کے درمیان ایک پراکسی کے طور پر کام کرتا ہے۔
app.listen() یہ کمانڈ ایکسپریس سرور کو ایک مخصوص پورٹ پر آنے والی درخواستوں کو سننا شروع کر دیتی ہے (مثال کے طور پر، اس معاملے میں پورٹ 5000)۔ ترقی کے دوران مقامی طور پر پراکسی سرور کی میزبانی کے لیے یہ بہت ضروری ہے۔
try...catch یہ بلاک ان خرابیوں کو سنبھالتا ہے جو بازیافت کی درخواست کے دوران ہو سکتی ہیں، جیسے کہ نیٹ ورک کی ناکامی یا Swiggy API کے ساتھ مسائل۔ یہ اس بات کو یقینی بناتا ہے کہ ایپ کریش ہونے کی بجائے خوبصورتی سے غلطیوں کو ہینڈل کرتی ہے۔

Swiggy API کے ساتھ رد عمل میں CORS کے مسائل کے حل کی وضاحت

پہلے حل میں، ہم نے a Node.js Swiggy's API سے ریستوراں کا ڈیٹا حاصل کرتے وقت CORS کے مسئلے کو نظرانداز کرنے کے لیے ایکسپریس کا استعمال کرتے ہوئے بیک اینڈ۔ CORS پالیسی براؤزرز کو مختلف ڈومین کی درخواستیں کرنے سے روکتی ہے جب تک کہ وہ ڈومین اس کی اجازت نہ دے۔ ایک سادہ سرور بنا کر، ہم کلائنٹ اور API کے درمیان درمیانی پرت کے طور پر کام کر سکتے ہیں، ڈیٹا سرور سائیڈ کو لا کر اسے React فرنٹ اینڈ پر واپس کر سکتے ہیں۔ یہ طریقہ CORS کی غلطیوں سے بچتا ہے کیونکہ درخواست کلائنٹ ایپ کے طور پر اسی اصل سے آتی ہے۔

ایکسپریس پسدید اپنی مرضی کے ہیڈر ترتیب دیتا ہے، خاص طور پر رسائی-کنٹرول-اجازت-اصل، جو ہمارے کلائنٹ کو CORS پابندیوں کا سامنا کیے بغیر وسائل کی درخواست کرنے کی اجازت دیتا ہے۔ Swiggy's API پر بازیافت کال کو سرور سائیڈ بنایا گیا ہے، اور ڈیٹا JSON فارمیٹ میں واپس کیا جاتا ہے۔ اس نقطہ نظر کو اکثر پیداواری ماحول میں زیادہ محفوظ اور کارآمد سمجھا جاتا ہے کیونکہ یہ API کیز یا حساس معلومات کو چھپاتا ہے۔ مزید برآں، ٹرائی کیچ کا استعمال مناسب غلطی سے نمٹنے کو یقینی بناتا ہے، اگر API جواب دینے میں ناکام ہو جاتا ہے تو صارف کے موافق غلطی کے پیغامات دکھاتا ہے۔

دوسرے حل میں، ہم کلائنٹ سائیڈ ری ایکٹ کوڈ پر بازیافت کی درخواست میں ترمیم کرتے ہیں۔ اس طریقہ کار میں بازیافت کال میں حسب ضرورت ہیڈر شامل کرنا شامل ہے، اس بات کو یقینی بنانا کہ درخواست کو API تک پہنچنے سے پہلے درست طریقے سے فارمیٹ کیا گیا ہے۔ ہم رد عمل کا استعمال کرتے ہیں۔ اثر استعمال کریں جب جزو ماؤنٹ ہوتا ہے تو API کال کو متحرک کرنے کے لیے ہک۔ async فنکشن API کے جواب کا انتظار کرتا ہے، اسے JSON میں تبدیل کرتا ہے، اور درخواست ناکام ہونے پر غلطیوں کو ہینڈل کرتا ہے۔ تاہم، اس حل کو اب بھی CORS مسائل کا سامنا ہے اگر API براہ راست براؤزرز سے کراس اوریجن درخواستوں کی اجازت نہیں دیتا ہے۔

آخر میں، تیسرے حل میں، ہم ایک فریق ثالث کی خدمت استعمال کرتے ہیں جسے CORS-Anywhere کہتے ہیں۔ یہ ایک مڈل ویئر سروس ہے جو اپنے سرور کے ذریعے API کی درخواست کو ری روٹ کرکے عارضی طور پر CORS پابندیوں کو نظرانداز کرنے میں مدد کرتی ہے۔ اگرچہ یہ حل ترقیاتی ماحول میں کام کر سکتا ہے، لیکن حفاظتی خطرات اور بیرونی خدمات پر انحصار کی وجہ سے پیداوار کے لیے اس کی سفارش نہیں کی جاتی ہے۔ یہ پرفارمنس اوور ہیڈ کو بھی متعارف کراتی ہے کیونکہ یہ ڈیٹا حاصل کرنے کے عمل میں ایک اضافی پرت کا اضافہ کرتا ہے۔ جانچ کے مراحل کے دوران اس طریقہ کا استعمال آسان ہو سکتا ہے لیکن حفاظتی وجوہات کی بنا پر پیداوار میں اس سے گریز کرنا چاہیے۔

حل 1: پراکسی سرور کے ساتھ CORS کے مسائل کو ہینڈل کرنا

یہ حل CORS کی غلطیوں سے بچنے اور Swiggy API سے صحیح طریقے سے ڈیٹا حاصل کرنے کے لیے Node.js بیک اینڈ پراکسی سرور کا استعمال کرتا ہے۔

const express = require('express');
const fetch = require('node-fetch');
const app = express();
const port = 5000;

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET');
  next();
});

app.get('/restaurants', async (req, res) => {
  try {
    const response = await fetch('https://www.swiggy.com/dapi/restaurants/list/v5?lat=23.1685786&lng=79.9338798');
    const data = await response.json();
    res.json(data);
  } catch (err) {
    res.status(500).json({ error: 'Failed to fetch restaurants' });
  }
});

app.listen(port, () => {
  console.log(`Server running on http://localhost:${port}`);
});

حل 2: کسٹم ہیڈرز اور ایرر ہینڈلنگ کے ساتھ فرنٹ اینڈ فیچ کا استعمال

یہ نقطہ نظر رد عمل میں براہ راست بازیافت کی درخواست میں ترمیم کرتا ہے، حسب ضرورت ہیڈر شامل کرتا ہے اور غلطیوں کو مؤثر طریقے سے ہینڈل کرتا ہے۔

import React, { useEffect } from 'react';

const Body = () => {
  async function getRestaurants() {
    try {
      const response = await fetch(
        'https://www.swiggy.com/dapi/restaurants/list/v5?lat=23.1685786&lng=79.9338798',
        { headers: { 'Content-Type': 'application/json' } }
      );

      if (!response.ok) {
        throw new Error('Network response was not ok');
      }

      const data = await response.json();
      console.log(data);
    } catch (error) {
      console.error('Fetch error:', error);
    }
  }

  useEffect(() => {
    getRestaurants();
  }, []);
};

export default Body;

حل 3: ترقی کے لیے CORS-Anywhere Middleware کا استعمال

یہ طریقہ ترقی کے موڈ میں رہتے ہوئے CORS پابندیوں کو نظرانداز کرنے کے لیے "CORS-Anywhere" سروس کا استعمال کرتا ہے۔ یہ حل پیداوار میں استعمال نہیں کیا جانا چاہئے.

const Body = () => {
  async function getRestaurants() {
    try {
      const response = await fetch(
        'https://cors-anywhere.herokuapp.com/https://www.swiggy.com/dapi/restaurants/list/v5?lat=23.1685786&lng=79.9338798'
      );

      const data = await response.json();
      console.log(data);
    } catch (error) {
      console.error('Error fetching restaurants:', error);
    }
  }

  useEffect(() => {
    getRestaurants();
  }, []);
};

export default Body;

API کی درخواستوں میں CORS کے مسائل کا ازالہ کرنا

ری ایکٹ ایپلی کیشن میں "فیچ کرنے میں ناکام" غلطی کی بنیادی وجوہات میں سے ایک، خاص طور پر سوئگی جیسے تھرڈ پارٹی APIs کا استعمال کرتے وقت، CORS (کراس اوریجن ریسورس شیئرنگ) پابندیاں۔ CORS ایک حفاظتی خصوصیت ہے جو ویب ایپلیکیشنز کو اس سے مختلف ڈومین پر درخواستیں کرنے سے روکتی ہے جہاں سے انہیں پیش کیا گیا تھا۔ اس صورت میں، Swiggy API درخواست کو مسترد کر دیتا ہے کیونکہ یہ ایک مختلف ڈومین (آپ کی React ایپ) سے نکلتی ہے۔ یہ خاص طور پر پریشانی کا باعث ہے جب آپ APIs سے ڈیٹا حاصل کر رہے ہیں جو واضح طور پر کراس اوریجن درخواستوں کی حمایت نہیں کرتے ہیں۔

ایک عام حل براؤزر ایکسٹینشن کا استعمال کرنا ہے جیسے "CORS کی اجازت دیں" کروم ایکسٹینشن۔ تاہم، اس طرح کی توسیع متضاد نتائج کی قیادت کر سکتے ہیں. اس کی وجہ یہ ہے کہ وہ براؤزر کی سطح کی ترتیبات میں ہیرا پھیری کرتے ہیں جو ہمیشہ API کی درخواستوں کے ساتھ مناسب طریقے سے ہم آہنگ نہیں ہوتی ہیں۔ یہ پلگ ان مثالی طور پر صرف ترقی کے لیے استعمال کیے جائیں نہ کہ پیداواری ماحول میں۔ پیداوار کے لیے، ایک محفوظ اور زیادہ قابل اعتماد نقطہ نظر بیک اینڈ پراکسی سرور کا استعمال کرے گا جو آپ کے React ایپ کی جانب سے ڈیٹا کی درخواست کرتا ہے، جیسا کہ پہلے فراہم کردہ حلوں میں دیکھا گیا ہے۔

غور کرنے کا ایک اور پہلو غلطیوں کو مؤثر طریقے سے سنبھالنا ہے۔ اگرچہ CORS کے مسائل "فیچ کرنے میں ناکام" کی خرابیوں کی ایک عام وجہ ہیں، دوسرے عوامل جیسے نیٹ ورک کی عدم استحکام، غلط API URLs، یا سرور کا ڈاؤن ٹائم بھی اس خرابی کا نتیجہ ہو سکتا ہے۔ لہذا، لاگو کرنا ضروری ہے مضبوط غلطی ہینڈلنگ آپ کے کوڈ میں، خاص طور پر جب فریق ثالث APIs کے ساتھ کام کریں۔ غلطی سے نمٹنے کا ایک مناسب طریقہ کار اس مسئلے کو زیادہ مؤثر طریقے سے ڈیبگ کرنے میں مدد کرے گا اور کچھ غلط ہونے پر صارف کے لیے دوستانہ پیغامات فراہم کرے گا۔

رد عمل میں CORS اور API کی درخواستوں کے بارے میں عام سوالات

  1. CORS کیا ہے اور یہ کیوں ضروری ہے؟
  2. CORS (کراس اوریجن ریسورس شیئرنگ) ایک سیکیورٹی پالیسی ہے جو براؤزرز کے ذریعے غیر بھروسہ مند ڈومینز سے بدسلوکی کی درخواستوں کو روکنے کے لیے نافذ کی جاتی ہے۔ یہ یقینی بناتا ہے کہ صرف مخصوص ڈومینز کو سرور سے وسائل لانے کی اجازت ہے۔
  3. مجھے "Unhandled Rejection (TypeError): حاصل کرنے میں ناکام" کیوں ہو رہا ہے؟
  4. یہ خرابی عام طور پر اس وقت ہوتی ہے جب آپ کی API کی درخواست CORS پابندیوں کی وجہ سے مسدود ہو جاتی ہے۔ یہ غلط API URLs یا سرور کے ساتھ مسائل کی وجہ سے بھی ہو سکتا ہے۔
  5. کیا کرتا ہے useEffect ہک اس تناظر میں کرتے ہیں؟
  6. دی useEffect ری ایکٹ میں ہک کا استعمال اجزاء کے نصب ہونے کے بعد API کی درخواست کو متحرک کرنے کے لیے کیا جاتا ہے۔ یہ یقینی بناتا ہے کہ بازیافت آپریشن صحیح وقت پر ہوتا ہے، متعدد غیر ضروری درخواستوں کو روکتا ہے۔
  7. میں رد عمل کی درخواست میں CORS کی غلطیوں کو کیسے ٹھیک کر سکتا ہوں؟
  8. CORS کی غلطیوں کو ٹھیک کرنے کے لیے، آپ بیک اینڈ پراکسی استعمال کر سکتے ہیں، اس کے ساتھ مناسب ہیڈر سیٹ کریں۔ res.setHeader سرور میں، یا ترقیاتی مقاصد کے لیے CORS-Anywhere جیسی خدمات پر انحصار کریں۔
  9. کیا میں پیداوار میں CORS براؤزر ایکسٹینشن استعمال کر سکتا ہوں؟
  10. نہیں، CORS براؤزر ایکسٹینشن کو صرف ترقی کے لیے استعمال کیا جانا چاہیے۔ پیداوار میں، سرور پر CORS کو کنفیگر کرنا یا پراکسی سرور استعمال کرنا زیادہ محفوظ ہے۔

رد عمل میں CORS کی خرابیوں کے انتظام کے بارے میں حتمی خیالات

CORS کی غلطیاں ایک عام چیلنج ہیں جب React ایپلی کیشنز تیار کرتے ہیں جو تھرڈ پارٹی API استعمال کرتے ہیں۔ اگرچہ براؤزر کی توسیعات ترقی میں مدد کر سکتی ہیں، لیکن سیکورٹی اور ڈیٹا کی سالمیت کو برقرار رکھنے کے لیے پیداواری ماحول میں پراکسی سرور جیسے زیادہ قابل اعتماد حل کو نافذ کرنا بہت ضروری ہے۔

درست تکنیکوں کا استعمال کرتے ہوئے، جیسے ایرر ہینڈلنگ اور بیک اینڈ حل، ڈویلپرز "فیچ کرنے میں ناکام" جیسے مسائل کو مؤثر طریقے سے ہینڈل کر سکتے ہیں۔ یہ اس بات کو یقینی بناتا ہے کہ APIs کے ساتھ تعامل کرتے وقت ان کی ایپلی کیشن ایک ہموار صارف کا تجربہ فراہم کرتی ہے، کارکردگی اور فعالیت کو بڑھاتی ہے۔

ری ایکٹ میں CORS کے مسائل کو سمجھنے کے لیے حوالہ جات اور ماخذی مواد
  1. کراس اوریجن ریسورس شیئرنگ (CORS) کے بارے میں تفصیلی معلومات کے لیے اور React میں اس کا انتظام کیسے کریں، ملاحظہ کریں۔ CORS پر MDN ویب دستاویزات .
  2. عام رد عمل کی خرابیوں کے بارے میں مزید سمجھنے کے لیے جیسے "فیچ کرنے میں ناکام" اور ممکنہ حل، چیک کریں۔ غلطی کی حدود پر رد عمل کی دستاویزات .
  3. اگر آپ ایکسپریس کے ساتھ CORS کے مسائل کو نظرانداز کرنے کے لیے ایک پراکسی سرور ترتیب دینے کے لیے کام کر رہے ہیں، تو ملاحظہ کریں۔ Express.js روٹنگ اور مڈل ویئر .
  4. JavaScript میں Fetch API کے ساتھ کام کرنے کے طریقے کے بارے میں مدد کے لیے، دیکھیں Fetch API پر MDN Web Docs .
  5. سرکاری API دستاویزات میں ریستوراں کے ڈیٹا کے لیے Swiggy's API استعمال کرنے کا طریقہ دریافت کریں: Swiggy API .