অ্যাক্সেস কন্ট্রোল রিকোয়েস্ট শিরোনাম, jQuery সঙ্গে AJAX অনুরোধে শিরোনাম যোগ করা হয়


403

আমি jQuery থেকে একটি AJAX পোস্ট অনুরোধে একটি কাস্টম শিরোনাম যুক্ত করতে চাই।

আমি এটি চেষ্টা করেছি:

$.ajax({
    type: 'POST',
    url: url,
    headers: {
        "My-First-Header":"first value",
        "My-Second-Header":"second value"
    }
    //OR
    //beforeSend: function(xhr) { 
    //  xhr.setRequestHeader("My-First-Header", "first value"); 
    //  xhr.setRequestHeader("My-Second-Header", "second value"); 
    //}
}).done(function(data) { 
    alert(data);
});

আমি যখন এই অনুরোধটি প্রেরণ করি এবং আমি ফায়ারব্যাগের সাথে নজর রাখি, তখন আমি এই শিরোনামটি দেখি:

বিকল্পগুলি xxxx / yyyy HTTP / 1.1
হোস্ট: 127.0.0.1:6666
ব্যবহারকারী-এজেন্ট: মজিলা / 5.0 (উইন্ডোজ এনটি 6.1; WW64; আরভি: 11.0) গেকো / 20100101 ফায়ারফক্স / 11.0
স্বীকার করুন: পাঠ্য / এইচটিএমএল, অ্যাপ্লিকেশন / এক্সএইচটিএমএল, এক্সএমএল, অ্যাপ্লিকেশন / এক্সএমএল; কিউ = 0.9, / ; কি = 0.8
স্বীকৃতি-ভাষা: ফ্রি, ফ্র-ফ্র; কিউ = 0.8, এন-ইউএস; কিউ = 0.5, এন; কিউ = 0.3
স্বীকৃতি-এনকোডিং: জিজিপ, ডিফল্ট
সংযোগ: রাখুন -লাইভ
উত্স: নাল
অ্যাক্সেস-কন্ট্রোল-রিকোয়েস্ট-পদ্ধতি: পোস্ট
অ্যাক্সেস-কন্ট্রোল-রিকোয়েস্ট-শিরোনাম: আমার-প্রথম-শিরোনাম, আমার-দ্বিতীয় শিরোলেখের
প্রাগমা: নো-ক্যাশে-ক্যাশে
-নিয়ন্ত্রণ: নন-ক্যাশে

আমার কাস্টম হেডারগুলিতে কেন যান Access-Control-Request-Headers:

অ্যাক্সেস-নিয়ন্ত্রণ-অনুরোধ-শিরোনাম: আমার প্রথম-শিরোনাম, আমার-দ্বিতীয় শিরোনাম

আমি এই জাতীয় শিরোনামের প্রত্যাশা করছিলাম:

আমার-প্রথম-শিরোনাম: প্রথম মান
আমার দ্বিতীয়-শিরোনাম: দ্বিতীয় মান

এটা কি সম্ভব?



প্রশ্নের শিরোনামে বলা উচিত যে "অন্য ডোমেনের জন্য"
হিসাবরক্ষক মেসি

উত্তর:


138

আপনি ফায়ারফক্সে যা দেখেছেন তা আসল অনুরোধ নয়; উল্লেখ্য যে এইচটিটিপি পদ্ধতিটি বিকল্প নয়, পোস্ট নয়। এটি আসলে 'প্রাক-বিমান' অনুরোধ ছিল যা ক্রস-ডোমেন এজেএক্স অনুরোধের অনুমতি দেওয়া উচিত কিনা তা ব্রাউজারটি নির্ধারণ করার জন্য করে:

http://www.w3.org/TR/cors/

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


437

এখানে jQuery Ajax কলটিতে কীভাবে একটি অনুরোধ শিরোনাম সেট করবেন তা একটি উদাহরণ:

$.ajax({
  type: "POST",
  beforeSend: function(request) {
    request.setRequestHeader("Authority", authorizationToken);
  },
  url: "entities",
  data: "json=" + escape(JSON.stringify(createRequestObject)),
  processData: false,
  success: function(msg) {
    $("#results").append("The result =" + StringifyPretty(msg));
  }
});

10
THX, আমি কাস্টম শিরোলেখ দিয়ে Ajax অনুরোধ পাঠাতে জানি। আমার সমস্যাটি বিভিন্ন ডোমেন নিয়ে ... আমার সমস্ত কাস্টম শিরোনাম অ্যাক্সেস-নিয়ন্ত্রণ-অনুরোধ-শিরোনামে রাখা হয়েছে। এটি ব্রাউজারে কেবল সুরক্ষা: ক্রস-ডোমেন।
আঙুলের আকার

হ্যাঁ, ব্রাউজারে ক্রস-ডোমেন অনুরোধগুলি কিছু অসুবিধা সৃষ্টি করতে পারে। আপনার ক্রস-ডোমেন অনুরোধগুলি প্রেরণ করতে আপনি সর্বদা কিছু প্রক্সি স্ক্রিপ্ট ব্যবহার করতে পারেন
মিলভোভস্কি

আমি কীভাবে এপিআই কে দিয়ে হেডার যুক্ত করব?
সি 8

@ Si8 পোস্টটি চেক করুন stackoverflow.com/questions/5517281/...
milkovsky

178

নীচের এই কোডটি আমার পক্ষে কাজ করে। আমি সবসময় কেবলমাত্র একক উদ্ধৃতি ব্যবহার করি এবং এটি দুর্দান্ত কাজ করে। আমি আপনাকে পরামর্শ দিচ্ছি যে আপনার কেবলমাত্র একক উদ্ধৃতি বা কেবলমাত্র ডাবল উদ্ধৃতি ব্যবহার করা উচিত , তবে মিশ্রিত নয়।

$.ajax({
    url: 'YourRestEndPoint',
    headers: {
        'Authorization':'Basic xxxxxxxxxxxxx',
        'X-CSRF-TOKEN':'xxxxxxxxxxxxxxxxxxxx',
        'Content-Type':'application/json'
    },
    method: 'POST',
    dataType: 'json',
    data: YourData,
    success: function(data){
      console.log('succes: '+data);
    }
  });

1
THX, আমি কাস্টম শিরোলেখ দিয়ে Ajax অনুরোধ পাঠাতে জানি। আমার সমস্যাটি বিভিন্ন ডোমেন নিয়ে ... আমার সমস্ত কাস্টম শিরোনাম অ্যাক্সেস-নিয়ন্ত্রণ-অনুরোধ-শিরোনামে রাখা হয়েছে। এটি ব্রাউজারে কেবল সুরক্ষা: ক্রস-ডোমেন।
আঙুলের আকার

ধন্যবাদ, আমি শিরোনামগুলি সেট করেছিলাম: "অনুমোদন: বেসিক XXXXXX" দুর্ঘটনাক্রমে এবং আইওএস 9 / সাফারি 9 একটি প্রকল্পে সিনট্যাক্সেরর ডোম 12 নিক্ষেপ করছিল।
চিহ্নিত করুন

4
আপনি ডাবল বা একক উদ্ধৃতি মানে? আমি মনে করি না যে কেউ ডাবল বন্ধনী ব্যবহার করবে।
ডিবিএস

3
ডাবল বা একক উদ্ধৃতি ("বন্ধনী" নয়) এখানে করার কিছুই নেই।
পেরে

তার এক্স-সিএসআরএফ-টোকেন লারাভেল ৫..6 এবং তদূর্ধের জন্য
আবদুল রহমান এ সামাদ

12

কারণ আপনি কাস্টম শিরোনাম প্রেরণ করেন তাই আপনার সিওআরএস অনুরোধটি কোনও সাধারণ অনুরোধ নয় , তাই সার্ভারটি আপনার অনুরোধের অনুমতি দেয় কিনা তা পরীক্ষা করার জন্য ব্রাউজারটি প্রথমে একটি প্রিফলাইট অপশন অনুরোধ প্রেরণ করে।

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

আপনি যদি সার্ভারে সিওআরএস চালু করেন তবে আপনার কোডটি কার্যকর হবে। আপনি এর পরিবর্তে জাভাস্ক্রিপ্ট আনয়ন ব্যবহার করতে পারেন ( এখানে )

এখানে একটি উদাহরণ কনফিগারেশন যা সক্রিয় হয় nginx উপর CORS (ফাইল nginx.conf):

এখানে একটি উদাহরণ কনফিগারেশন যা অ্যাপাচি (.htaccess ফাইল) এ সিওআরএস চালু করে is


3

এবং সে কারণেই আপনি জাভাস্ক্রিপ্ট দিয়ে বট তৈরি করতে পারবেন না, কারণ আপনার বিকল্পগুলি ব্রাউজার আপনাকে যা করতে দেয় তা সীমাবদ্ধ। আপনি কেবল এমন কোনও ব্রাউজারকে অর্ডার করতে পারবেন না যা সিওআরএস নীতি অনুসরণ করে , যা বেশিরভাগ ব্রাউজারগুলি অনুসরণ করে, অন্যান্য উত্সে এলোমেলো অনুরোধগুলি প্রেরণ করতে এবং আপনাকে কেবল যে প্রতিক্রিয়া পেতে দেয়!

তদতিরিক্ত, যদি আপনি origin-headerব্রাউজারগুলির সাথে আসা বিকাশকারী সরঞ্জামগুলির মতো কিছু অনুরোধ শিরোনাম ম্যানুয়ালি সম্পাদনা করার চেষ্টা করেন তবে ব্রাউজারটি আপনার সম্পাদনাটি প্রত্যাখ্যান করবে এবং একটি প্রিফলাইট OPTIONSঅনুরোধ প্রেরণ করতে পারে ।


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