আইই তে 'পরিবহণ নেই' ত্রুটি ডাব্লু / জিকুয়েরি অজ্যাক্স কল


110

ভেন্যু অনুসন্ধান করার জন্য আমার চারদিকের এপিআই ব্যবহার করা উচিত। অবশ্যই এটি ক্রস-ডোমেন।

ফায়ারফক্সে এটির কোনও সমস্যা নেই তবে ইন্টারনেট এক্সপ্লোরার (7, 8, 9 আমি পরীক্ষা করেছি)।

আমার জাভাস্ক্রিপ্ট কোডটি দেখে মনে হচ্ছে:

searchVenues: function(searchQuery) {
    $.ajax({
       url: 'https://api.foursquare.com/v2/venues/search',
       data: {
            sw: bound_south_west,
            ne: bound_north_east,
            query: searchQuery.query,
            oauth_token: FSQ_OAUTH_TOKEN,
            limit: 25,
            intent: 'browse',
            v: 20120206
       },
       cache: false,
       dataType: 'json',
       success: function(data) {
           displayResults(data, searchQuery.query);
       },
       error: function(xhr, status, errorThrown) {
           console.log(errorThrown+'\n'+status+'\n'+xhr.statusText);
       }
    });
}

ফায়ারফক্সে এটি পুরোপুরি প্রাপ্ত ডেটা প্রদর্শন করে। ইন্টারনেট এক্সপ্লোরারে এটি কনসোলে লগ করে:

No Transport
Error
Error

আমার কি করা উচিৎ?


উত্তর:


265

আমি এটি উইন্ডোজ মোবাইল 7 এ পরীক্ষা করেছি।

বুঝতে প্রচুর সময় ব্যয় করার পরে, আমি অবশেষে এটি পেয়েছি:

http://bugs.jquery.com/ticket/10660

সমাধানটি সহজ, কেবল এটি সেট করুন:

$.support.cors = true;

এবং অ্যাজাক্স ক্রস ডোমেন অনুরোধগুলি কাজ করবে!


47
আমি পেয়েছি 'ত্রুটি: অ্যাক্সেস অস্বীকার করা হয়েছে' পাশাপাশি আইই
ড্যারেন কুনি

1
এটি কিছুটা নিরুৎসাহজনক যে স্বীকৃত উত্তরটি আসলে IE8 বা IE9 এ সমস্যার সমাধান করে না।
ওয়ারেন রুমাক

2
আমারও তেমন একটা সমস্যা আছে।
আইই

7
আমি "ত্রুটি: অ্যাক্সেস প্রত্যাখ্যান করা" পেয়েছি, আমার ভুলটি ছিল যে আমি এইচটিটিপিএস ডোমেন থেকে এইচটিটিপিএস সামগ্রী টেনেছি। আপনার ওয়েবসাইট এবং আপনার এজাক্স টার্গেট একই প্রোটোকল ব্যবহার করছে তা নিশ্চিত করুন (HTTP বা HTTPS)
Torben

2
আমি বিশ্বাস করি এটি এখন ডিফল্টরূপে সেট করা আছে। আমার জন্য সমাধান একটি XDR অনুরোধ পরিবহন ছিল - এই জনপ্রিয় উত্তর দেখুন: stackoverflow.com/a/10232313/217866
jackocnr

13
jQuery.support.cors = true;

$.ajax({
  crossDomain: true,
  url: "",
  type: "POST",
  dataType: "xml",
  data: soapMessage,
});

আপনার ক্রস ডোমেন মানটি সত্য করে তুলতে হবে


8
আপনার উত্তর এবং গৃহীত উত্তরটির মধ্যে পার্থক্য কী, এটি বেশ কিছুদিন আগে আপনার পোস্ট করা হয়েছিল?
জাভান্না

2
@ জাভান্না crossDomain: trueবিকল্প যুক্তি সংযোজন ।
ক্রিস মারাস্তি-জর্জি

8
ক্রস ডোমেন কী এবং কেন এটি সত্য হওয়া দরকার?
আজিজ সালেহ

আপনি প্রয়োজন হবে না crossDomain: trueযে কি $.support.corsডিফল্টরূপে হয়, তাহলে আমার ভুল না হলে
মার্ক Pieszak - Trilon.io

7

এই সমস্যাটি আমাকে কিছুদিন ধরে তল্লাশি করে চলেছে। কার্যকারণ হিসাবে আমি একই সাইটে অবস্থিত প্রক্সি স্ক্রিপ্ট ব্যবহার করি। এই জাতীয় স্ক্রিপ্টগুলি কেবল সার্ভার-টু-সার্ভার নন-এজাক্স এইচটিটিপি অনুরোধ সম্পাদন করে (কার্ল এবং WinHttp.WinHttpRequest সম্পর্কে ভাবেন) এবং স্ট্যাটাস এবং ডেটা কলারের কাছে ফেরত দেয়। এটি কাজ করে, তবে স্পষ্টতই খুব দক্ষ নয় কারণ এটিতে দুটি HTTP অনুরোধ সম্পাদন করতে হবে।

আমার ক্ষেত্রে, সমাধানটি উপরে বর্ণিত সমস্ত জিনিস এবং 'অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স' শিরোনামের সংমিশ্রণ।

$.support.cors = true; // this must precede $.ajax({}) configuration

$.ajax({
  crossDomain: true, // added in jQuery 1.5
  headers: {
    'Access-Control-Allow-Origin': '*'
  },
  ...
});

এই কলগুলির জবাব দেয় যে ওয়েব পরিষেবাটি 'অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন: *' শিরোনামের সাথে সাড়া দেয়।


4
... এবং তবুও এটি একটি হ'ল কর্ড শিরোনাম উল্লেখ করার প্রথম উত্তর। গৃহীত সমাধানটি আমার পক্ষে কার্যকর হয়নি।
seanhodges

2
আমার ধারণা এটি পরিষেবার পরিবর্তে ওয়েবকনফাইগে থাকা উচিত।
Fjodr

6

এই সমাধান চেষ্টা করুন:

https://stackoverflow.com/a/14463975/237091

অথবা, jquery অন্তর্ভুক্ত করার পরে এই HTMLটি ঠিক আপনার HTML এ রাখুন।

<!--[if lte IE 9]>
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script>
<![endif]-->

আমি অ্যান্ড্রয়েডে ক্রোম (এবং সম্ভবত অ্যান্ড্রয়েড ব্রাউজার) এ একই সমস্যা দেখা পেয়েছি, তাই সম্ভবত সমস্ত ব্রাউজারগুলিকে এই স্ক্রিপ্টটি ব্যবহার করার অনুমতি দেওয়ার জন্য শর্তাধীন মন্তব্যটি ছেড়ে দিন। (প্রকল্পের হোম পৃষ্ঠাটি এখানে: github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest )
ডেভ বার্ট

1
এটি আমার পক্ষে কাজ করেছে। রেসপন্স সামগ্রী-প্রকারটি 'পাঠ্য / প্লেইন' কিনা তা নিশ্চিত করার পাশাপাশি
নিকোলে মেল্নিকভ

আমি jquery এর পরে গ্রান্টে এটি যুক্ত করেছি এবং এখন এটি কাজ করে ( npmjs.com/package/jquery-ajax-transport-xdomainrequest )।
tobias47n9e

0

আমি কেবল jquery সংস্করণ পরিবর্তন করেছি এবং সিডিএন লিঙ্কটি প্রতিস্থাপন করেছি এবং এটি কার্যকর হয়েছে! crossDomain:trueএবং $.support.cors= সত্য যদি কাজ না করে তবে এটি করুন ।

<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.