একই-উত্স নীতিমালার কারণে আপনি http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xmlমোতায়েন করা কোনও ফাইল থেকে অজ্যাক্স কল করতে সক্ষম হবেন না ।http://run.jsbin.com
উত্স (ওরফে অরিজিন ) পৃষ্ঠা এবং লক্ষ্য URLটি বিভিন্ন ডোমেন ( run.jsbin.comএবং www.ecb.europa.eu) এ থাকায় আপনার কোডটি আসলে কোনও সাধারণ নয়, ক্রস-ডোমেন (সিওআরএস) অনুরোধ করার চেষ্টা করছে GET।
কয়েকটি কথায়, একই-উত্স নীতিতে বলা হয়েছে যে ব্রাউজারগুলির কেবলমাত্র HTML পৃষ্ঠার একই ডোমেনে পরিষেবাতে অজ্যাক্স কলগুলি মঞ্জুরি দেওয়া উচিত ।
উদাহরণ:
এর একটি পৃষ্ঠা http://www.example.com/myPage.htmlকেবলমাত্র সেই জাতীয় পরিষেবার জন্য সরাসরি অনুরোধ করতে http://www.example.comপারে http://www.example.com/api/myService। যদি পরিষেবাটি অন্য কোনও ডোমেনে হোস্ট করা হয় (বলুন http://www.ok.com/api/myService), ব্রাউজারটি সরাসরি কল করবে না (যেমনটি আপনি আশা করেছিলেন)। পরিবর্তে, এটি একটি সিওআরএস অনুরোধ করার চেষ্টা করবে।
এটি শীঘ্রই রাখতে, আপনার ব্রাউজারে বিভিন্ন ডোমেন জুড়ে একটি (সিওআরএস) অনুরোধ সম্পাদন করতে:
Originমূল অনুরোধে একটি শিরোনাম অন্তর্ভুক্ত করবে (মান হিসাবে পৃষ্ঠার ডোমেন সহ) এবং এটি যথারীতি সম্পাদন করবে; এবং তারপর
- শুধু যদি সার্ভার প্রতিক্রিয়া যে অনুরোধ রয়েছে পর্যাপ্ত হেডার (
Access-Control-Allow-Originহয় এক তাদের ) CORS অনুরোধ যার ফলে ব্রাউজ কল (প্রায় ** ঠিক যেভাবে এটা would যদি HTML পাতায় একই ডোমেনে ছিল না) সম্পন্ন করা হবে।
- যদি প্রত্যাশিত শিরোনাম না আসে, ব্রাউজারটি কেবল ছেড়ে দেয় (যেমনটি এটি আপনাকে করেছিল)।
* উপরেরগুলি একটি সাধারণ অনুরোধে পদক্ষেপগুলি চিত্রিত করে , যেমন GETকোনও অভিনব শিরোনামহীন নিয়মিত । অনুরোধ সহজ না হয়, তাহলে (মত একটি POSTসঙ্গে application/jsonবিষয়বস্তুর প্রকার হিসাবে), ব্রাউজার এটা একটি মুহূর্ত রাখা হবে, এবং, এটা পূরণে আগে, প্রথমে একটি পাঠাব OPTIONSলক্ষ্য URL- এ অনুরোধ। উপরের মত, এটি কেবল তখনই চলতে থাকবে যদি এই OPTIONSঅনুরোধের প্রতিক্রিয়ায় CORS শিরোনাম থাকে। এই OPTIONSকলটি প্রিফ্লাইট অনুরোধ হিসাবে পরিচিত ।
** আমি প্রায় বলছি কারণ নিয়মিত কল এবং সিওআরএস কলগুলির মধ্যে অন্যান্য পার্থক্য রয়েছে। একটি গুরুত্বপূর্ণ হ'ল কিছু শিরোনাম, প্রতিক্রিয়াতে উপস্থিত থাকলেও, ব্রাউজারটি যদি তাদেরAccess-Control-Expose-Headers শিরোনামে অন্তর্ভুক্ত না করা হয় তবে তা বাছাই করা যাবে না ।
কিভাবে ঠিক হবে এটা?
এটা কি শুধু টাইপো ছিল? কখনও কখনও জাভাস্ক্রিপ্ট কোড লক্ষ্য ডোমেন মধ্যে একটি টাইপো আছে। আপনি চেক করা আছে? পৃষ্ঠাটি যদি থাকে www.example.comতবে কেবলমাত্র নিয়মিত কল করতে হবে www.example.com! অন্যান্য ইউআরএল, যেমন api.example.comবা এমনকি example.comবা ব্রাউজার দ্বারা বিভিন্ন ডোমেন www.example.com:8080হিসাবে বিবেচিত হয়! হ্যাঁ, বন্দরটি যদি আলাদা হয় তবে এটি অন্যরকম ডোমেন!
শিরোনাম যুক্ত করুন। সিওআরএস সক্ষম করার সহজতম উপায় হ'ল Access-Control-Allow-Originসার্ভারের প্রতিক্রিয়াগুলিতে প্রয়োজনীয় শিরোনাম (গুলি ) যুক্ত করা। (প্রতিটি সার্ভার / ভাষার একটি উপায় রয়েছে - এখানে কিছু সমাধান দেখুন )
সর্বশেষ অবলম্বন: যদি আপনার পরিষেবাতে সার্ভার-সাইড অ্যাক্সেস না থাকে তবে আপনি এটিও আয়না করতে পারেন ( রিভার্স প্রক্সির মতো সরঞ্জামগুলির মাধ্যমে ) এবং সেখানে সমস্ত প্রয়োজনীয় শিরোনাম অন্তর্ভুক্ত করতে পারেন।