অনুরোধ করা সংস্থান ত্রুটিতে কোনও 'অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন' শিরোনাম উপস্থিত নেই


94

আমি একটি নিউজ ওয়েবসাইটের ফিড আনার চেষ্টা করছি। ভেবেছিলাম আমি ফিডবার্নার ফিডটিকে জসনতে রূপান্তর করতে গুগলের ফিড এপিআই ব্যবহার করব। নিম্নলিখিত url জডসন ফর্ম্যাটে ফিড থেকে 10 টি পোষ্ট ফিরিয়ে দেবে। http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http://feeds.feedburner.com/mathrubhumi

উপরের ইউআরএল এর সামগ্রীগুলি পেতে আমি নীচের কোডটি ব্যবহার করেছি

$.ajax({
  type: "GET",
  dataType: "jsonp",
  url: "http://ajax.googleapis.com/ajax/services/feed/load",
  data: {
    "v": "1.0",
    "num": "10",
    "q": "http://feeds.feedburner.com/mathrubhumi"
  },
  success: function(result) {
    //.....
  }
});

তবে এটি কাজ করছে না এবং আমি নিম্নলিখিত ত্রুটি পেয়েছি

এক্সএমএলএইচটিপিআরকুয়েস্ট http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http%3A%2F%2Ffeeds.feedburner.com%2Fmathrubhumi লোড করতে পারবেন না । অনুরোধকৃত উত্সটিতে কোনও 'অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন' শিরোনাম উপস্থিত নেই। উত্স ' http: // লোকালহোস্ট ' এর ফলে অ্যাক্সেসের অনুমতি নেই।

আমি কিভাবে এটা ঠিক করব?


4
আমি এখানে আপনার কোডটি Chrome এর সাথে পরীক্ষা করেছি এবং প্রত্যাশার মতো কাজ করেছি। আপনি কি "ক্রসডোমাইন: সত্য" বৈশিষ্ট্যটি ব্যবহার করার চেষ্টা করেছেন?
ড্যানিয়েল লোরেইরো

আমি এখানে আপনার কোড হোস্ট করেছি: learnwithdaniel.com/test.html । আপনি ত্রুটি ছাড়াই খুলতে পারেন কিনা দেখুন। যদি আপনি কোনও ত্রুটি না পান তবে সমস্যাটি এটি আপনার সার্ভারের সাথে
ড্যানিয়েল লোরেইরো

দুর্দান্ত সুতরাং এটি আপনার ব্রাউজার যখন এইচটিএমএলটির জন্য একটি অনুরোধ করে তখন আপনি সার্ভারটি পাঠান এমন শিরোনামগুলির সাথে সম্পর্কিত। "কর্স শিরোলেখগুলির জন্য" দেখুন
ড্যানিয়েল লোরেইরো

এখানে গডাড্ডি এপিআইয়ের সাথে একই
গিলসন গিলবার্ট

এই প্রশ্নটি কি সদৃশ নয়? stackoverflow.com/questions/20035101/… আরও গুরুত্বপূর্ণ, এই অন্যান্য প্রশ্নের পরিষ্কার / আরও বিশদ উত্তর আছে।
রেড মটর

উত্তর:


86

আমি বিশ্বাস করি এটি সম্ভবত এমন হতে পারে যে Chrome ক্রোম - ক্রোম সমস্যাটি দেখেlocalhost যেতে সমর্থন করে নাAccess-Control-Allow-Origin

Chrome Access-Control-Allow-Originশিরোনামে প্রেরণ করতে , আপনার / ইত্যাদি / হোস্ট ফাইলের মধ্যে আপনার লোকালহোস্টটি কেবলমাত্র অন্য কোনও ডোমেনের কাছে, যেমন:

127.0.0.1   localhost yourdomain.com

তারপরে যদি আপনি এর yourdomain.comপরিবর্তে আপনার স্ক্রিপ্টটি অ্যাক্সেস করতে চান localhostতবে কলটি সফল হবে।


ধন্যবাদ. আমি এই সমস্যাটি অনুভব করছিলাম এবং আইই প্রান্তে স্যুইচ করছিলাম, এতে আমার সার্ভার কোডের অন্তর্নিহিত ত্রুটি দেখা দিয়েছে যা ক্রোমের লোকালহোস্ট অস্বীকার করার কারণে অস্পষ্ট হয়ে পড়েছিল।
আলুয়ান হাদাদ

7
আমার জন্যও কাজ করে না। সম্ভবত ক্রোমের কোনও আপডেট এই "লুফোল "টিকে অবরুদ্ধ করেছে?
মার্টি সি।

4
এখানেও কোনও সহায়তা নেই। আমার ওয়েবসাইটটি ইতিমধ্যে এইভাবে সেট আপ করা হয়েছে তবে আমার মধ্যে একটি বড় পার্থক্য রয়েছে। আমি একটি ভিন্ন বন্দর ব্যবহার করছি। আমি নিশ্চিত যদি এটি একই বন্দর হয়, এটি কাজ করবে। এইচটিটিপি বনাম এইচটিটিপিএস অবশ্যই আলাদা আলাদা বন্দর, যাতে আপনার কিছু সমস্যার কারণ হতে পারে। খনিটি বিশেষত এইচটিটিপিএস নয়, তবে আমি একই ডোমেনের কিছুতে হলেও
জেরি ডজ

ক্রোম এক্সটেনশানগুলির দ্বারা যদি API এ অ্যাক্সেস করা হয় তবে কী করা যায়
ভিভিকসিংহগিগিটস

114

আপনি যদি গুগল ক্রোম ব্রাউজার ব্যবহার করেন তবে আপনি কোনও এক্সটেনশান দিয়ে হ্যাক করতে পারেন।

আপনি একটি ক্রোম এক্সটেনশান খুঁজে পেতে পারেন যা আপনার অ্যাপ্লিকেশনটির ফ্লাইতে সিওআরএস শিরোনামকে সংশোধন করবে। স্পষ্টতই, এটি কেবল ক্রোম, তবে আমি পছন্দ করি যে এটি যে কোনও জায়গায় শূন্য পরিবর্তনের সাথে কাজ করে।

আপনি এটিকে স্থানীয় মেশিনে অ্যাপটি ডিবাগ করার জন্য ব্যবহার করতে পারেন (যদি সবকিছুই উত্পাদন কাজ করে)।

বিজ্ঞপ্তি : URL টি নষ্ট হয়ে গেলে এক্সটেনশনের নাম হ'ল অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-উত্স: * । আপনি আপনার স্টাফগুলিতে কাজ না করার সময় আপনাকে এই এক্সটেনশনটি অক্ষম করার পরামর্শ দিচ্ছি, কারণ উদাহরণস্বরূপ, ইউটিউব এই এক্সটেনশনটির সাথে কাজ করে না।


এটি অবশ্যই আমার জন্য কাজ করেছে! ... আমি মনে করি যে প্লাগিনের বিকাশকারী এটির জন্য আপডেট করে কিছু ইউআরএল ম্যানুয়ালি সবকিছুর জন্য কাজ না করে ফিট করে, আমি ইউটিউব এবং অন্যান্য সাইট পরিদর্শন করেছি এবং এটি ঠিক কাজ করে। যাইহোক অনেক ধন্যবাদ।
কিংস্টন ফরচুন

4
এটি শুধুমাত্র উন্নয়নের সময় পরীক্ষার জন্য। ব্যবহারকারীরা ব্রাউজারে প্লাগইন যুক্ত করতে যাচ্ছেন না
ক্যাপশন নিউট

দেখে মনে হচ্ছে যে এই এক্সটেনশনটি আর উপলভ্য নয়, কমপক্ষে সেই URL এ। যদিও এই এক্সটেনশনটি কাজ করছে বলে মনে হচ্ছে: chrome.google.com/webstore/detail/allow-cors-access-control/…
গর্ডন

4
কিন্তু এই এক্সটেনশনটি কী করছে ? আপনি কি কোনও ওপেন-সোর্স সংস্করণ সম্পর্কে জানেন বা শিরোনামকে এভাবে পরিবর্তন করে এমন একটি লিখতে কী করবেন? আপনি সম্ভবত চান না (ভাল, ঠিক আছে, আমি চাই না) এমন কোনও এক্সটেনশান চালাতে চান যা এটি করছে তা না জেনে URL এবং ডেটাতে সম্পূর্ণ অ্যাক্সেস রয়েছে। দেখে মনে হচ্ছে যেন একটি হতে পারে খুব খারাপ ধারণা এক্সটেনশন হাত বদলায়, ইতিমধ্যে বদমাইশ হলে, ইত্যাদি সম্পাদনা করুন: এক নিচে উল্লিখিত হয় ওপেন সোর্স , fwiw।
রাফিন

@ আরফিন এটি দেখানোর জন্য আপনাকে ধন্যবাদ! তদতিরিক্ত, এটি এই ওপেনসোর্স ক্রোম প্লাগইন সিআরএস অবরোধ মুক্ত রাখার বিষয়টিও ফায়ারফক্স এবং মাইক্রোসফ্ট এজতে উপলব্ধ।
চমত্কার

9

এটি চেষ্টা করুন - শিরোনামটি নীচে সেট আপ করে অ্যাজাক্স কল সেট করুন:

var uri = "http://localhost:50869/odata/mydatafeeds"
$.ajax({
    url: uri,
    beforeSend: function (request) {
        request.setRequestHeader("Authorization", "Negotiate");
    },
    async: true,
    success: function (data) {
        alert(JSON.stringify(data));
    },
    error: function (xhr, textStatus, errorMessage) {
        alert(errorMessage);
    }                
});

তারপরে নীচের কমান্ড লাইনের সাথে ক্রোম খোলার মাধ্যমে আপনার কোডটি চালান:

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

1

শুধু এফওয়াইআই, আমি jQuery ডকুমেন্টেশন থেকে এই তথ্যটি লক্ষ্য করেছি যা আমার বিশ্বাস এই ইস্যুতে প্রযোজ্য:

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

@ থ্যানিক্সের মতো হোস্ট ফাইল পরিবর্তন করা আমার পক্ষে কার্যকর হয়নি তবে @dkruchok দ্বারা উল্লিখিত এক্সটেনশনটি সমস্যার সমাধান করেছে।


1

Cors অবরোধ মুক্ত কাজের ক্রোম 78 [ইউএনবি CORS] দারুণ [1] https://chrome.google.com/webstore/detail/cors-unblock/lfhmikememgdcahcdlaciloancbhjino

এটি গুগল ক্রোমের জন্য একটি প্লাগইন যার নাম "কর্স আনব্লক"

সংক্ষিপ্তসার: 'অ্যাক্সেস-কন্ট্রোল-অলজিন-অরিজিন: *' স্থানীয় এবং রিমোট ওয়েব অনুরোধের শিরোনাম সক্ষম করার পরে আর কোনও সিওআর ত্রুটি নেই

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


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

0

ক্রোম আপনাকে দুটি পৃথক লোকালহোস্ট সংহত করতে দেয় না, সে কারণেই আমরা এই ত্রুটিটি পাচ্ছি। আপনাকে কেবল নুগেট ম্যানেজার থেকে মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও ওয়েব এপিআই কোর প্যাকেজটি অন্তর্ভুক্ত করতে WebApiConfig.cs হবে এবং আপনার ফাইলে ওয়েবএপিআই প্রকল্পের দুটি লাইন কোড যুক্ত করুন।

var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);

তারপরে সব শেষ।


স্পষ্টতই এটি কেবল ডটনেট কোর ব্যাকেন্ডের জন্যই প্রযোজ্য
হায়

0

যদি এটি কলিং স্প্রিং বুট পরিষেবা। আপনি নীচের কোড ব্যবহার করে এটি পরিচালনা করতে পারেন।

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS")
                    .allowedHeaders("*", "Access-Control-Allow-Headers", "origin", "Content-type", "accept", "x-requested-with", "x-requested-by") //What is this for?
                    .allowCredentials(true);
        }
    };
}

0

উন্নয়নের জন্য আপনি https://cors-anywhere.herokuapp.com ব্যবহার করতে পারেন , উত্পাদনের জন্য নিজের প্রক্সি সেটআপ করা ভাল for

async function read() {
   let r= await (await fetch('https://cors-anywhere.herokuapp.com/http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http://feeds.feedburner.com/mathrubhumi')).json();
   console.log(r);
}

read();


0

ভাল, অন্য উপায়টি হল কর্স প্রক্সি ব্যবহার করা, আপনার URL টির আগে আপনাকে কেবল https://cors-anywhere.herokuapp.com/ যুক্ত করা দরকার so আপনার URL টি https://cors-anywhere.herokuapp.com/http এর মতো হবে : //ajax.googleapis.com/ajax/services/feed/load

প্রক্সি সার্ভার উপরের ইউআরএল থেকে http://ajax.googleapis.com/ajax/services/feed/load গ্রহণ করে । তারপরে এটি সার্ভারের প্রতিক্রিয়া পেতে অনুরোধ জানায়। এবং পরিশেষে, প্রক্সি প্রয়োগ করে

Access-Control-Allow-Origin: *

যে মূল প্রতিক্রিয়া।

এই সমাধানটি দুর্দান্ত কারণ এটি উন্নয়ন এবং উত্পাদন উভয় ক্ষেত্রেই কাজ করে। সংক্ষেপে, আপনি যে একই-উত্স নীতিটি কেবল ব্রাউজার-থেকে-সার্ভার যোগাযোগেই প্রয়োগ করা হয় সে বিষয়টি আপনি গ্রহণ করছেন। যার অর্থ এটি সার্ভার-টু-সার্ভার যোগাযোগে প্রয়োগ করতে হবে না!

আপনি সমাধান সম্পর্কে আরও পড়তে পারেন কর্স ত্রুটিটি ফিক্স করার মাঝারি 3 টি উপায়


-5

অনুরোধকৃত উত্সটিতে ক্রোম ত্রুটির শিরোনামের সমাধান উপস্থিত @CrossOriginথাকায় দয়া করে backendsideস্প্রিং বুট নিয়ামক (শ্রেণি স্তর বা পদ্ধতি স্তর) ব্যবহার 'No 'Access-Control-Allow-Origin'করুন ''

এই সমাধানটি আমার জন্য 100% কাজ করছে ...

উদাহরণ: শ্রেণি স্তর

@CrossOrigin
@Controller
public class UploadController {

----- বা - -------

উদাহরণ: পদ্ধতি স্তর

@CrossOrigin(origins = "http://localhost:3000", maxAge = 3600)
@RequestMapping(value = "/loadAllCars")
    @ResponseBody
    public List<Car> loadAllCars() {


Ref: https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

যদিও এটি অবশ্যই ওপির প্রশ্নের উত্তর দেয় না, এটির একটি বৈধ পয়েন্ট রয়েছে। জাভাস্ক্রিপ্টের মাধ্যমে স্প্রিং আরএসএফুল সার্ভিসেস / ডেটা গ্রহণের জন্য আপনাকে @CrossOriginএনটেশন সেট করা প্রয়োজন । যারা ডাউনওয়েট করেছেন তাদের সকলকে: দয়া করে আপনার যুক্তিটি বর্ণনা করুন!
rwenz3l
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.