ওয়েবসিউসে jQuery কল কল "কোনও পরিবহন নয়" ত্রুটি দেয়


163

আমার নীচের ওয়েব পরিষেবা রয়েছে;

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

এটি শ্রেণীর সাজসজ্জারে কোনও পরিবর্তন ছাড়াই স্টক স্ট্যান্ডার্ড।

আমার এই jQuery পদ্ধতি আছে;

var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld"; 

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: "{}",  
    dataType: "json",
    url: webMethod,
    success: function(msg){ alert(msg.d); },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
          }
});

এটি একটি পোস্ট ক্রিয়া কারণ পরে আমার এটিতে ডেটা পোস্ট করা দরকার।

আমি jQuery কার্যকর করার সময় আমি একটি "পরিবহন" ত্রুটি ফিরে পেয়েছি।

একটি জিনিস আমারও উল্লেখ করা উচিত যে jQueryটি আমার মেশিনে একটি সাধারণ এইচটিএমএল ফাইলে সংরক্ষণ করা হয় এবং আমার মেশিনে ওয়েব সার্ভিসও চলছে।

এইচটিএমএল পৃষ্ঠায় পিছনে কোনও কোড নেই এটি কেবল একটি ওয়েব পৃষ্ঠা এবং এটি # প্রকল্প বা কোনও কিছুই নয়।

কেউ দয়া করে আমাকে এখানে সঠিক দিকে নির্দেশ করতে পারেন?


আপনি কি কেবল একটি ব্রাউজার ব্যবহার করে আপনার ওয়েব পরিষেবাতে যেতে পারেন?
অ্যাভিটাস

দুঃখিত, আমি লক্ষ্য করি না যে এটি একটি আলাদা পোস্ট (আমি এই পোস্টটি আমার নিজের বলে ভেবেছিলাম এটি সম্পাদনা করেছি), আমার নিজের পোস্টে হাইপারলিঙ্কটি অবশ্যই ক্লিক করতে হবে। পোস্টের মালিককে সত্যিই দুঃখিত = \
এরিক গার্সিয়া

s .support.cors = সত্য; যদি আপনার শেষ পয়েন্টটি CORS সক্ষম করা থাকে (এটি কোনও অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-অরিজিনের শিরোনাম ইত্যাদির সাথে সঠিকভাবে প্রতিক্রিয়া জানায়), তবে কোডের এই লাইনটি j8 কে আইই 8-তে ক্রস উত্সের অনুরোধ করতে রাজি করবে। আমি কেবল এটির মধ্যে ছুটে এসেছি, এই আশা করে এটি আপনার কিছুটা সময় এবং মাথা ব্যথা সাশ্রয় করবে।
জেরেমি হার্ট

উত্তর:


95

যদি আপনার jQuery পৃষ্ঠাটি লোড হচ্ছে না http://localhost:54473তবে এই সমস্যাটি সম্ভবত আপনি ক্রস-ডোমেন অনুরোধ করার চেষ্টা করছেন।

আপডেট 1 কটাক্ষপাত এই ব্লগ পোস্টে

আপডেট 2 যদি এটি প্রকৃতপক্ষে সমস্যা হয় (এবং এটি আমার সন্দেহ হয়) তবে আপনি সমাধান হিসাবে জেএসএনপি চেক করতে চাইতে পারেন। এখানে কয়েকটি লিঙ্ক রয়েছে যা আপনাকে শুরু করতে সহায়তা করতে পারে:


4
হ্যাঁ, এটির সুরক্ষার সাথে সম্ভবত কিছু করার আছে।
ততেনগাহ

3
এটি লোকালহোস্ট হতে হবে না: 54473, এটি কেবল একই ডোমেন হতে হবে।
jcolebrand

7
@ ড্র্যাচেনস্টার্ন এইচএম, আমি সর্বদা চিন্তা করেছি (এবং সর্বদা পড়ার কথা মনে করি) যে স্কিম, হোস্ট এবং বন্দরটি একই হওয়া দরকার। এই এবং এই এবং এই কি একই ডোমেনে গঠন সম্পর্কে চিন্তা আমার পথ সমর্থন বলে মনে হচ্ছে।
no.good.at.coding

@ ড্র্যাচেনস্টার্ন খুশি! এই সমস্ত ওয়েব
স্টাফটি জটিল

1
@ অভিযোগগুলি শুনতে ভাল তবে লক্ষ্য করুন যে আপনি আসলে সমস্যাটি সমাধান করছেন না - এটি কেবল তখনই কাজ করবে যদি পরিবেশ ক্রস-ডোমেন অনুরোধগুলিকে মঞ্জুরি দেয় যেহেতু আপনি কেবলমাত্র জিকিউরি রাখে এমন নিরাপদ-রক্ষীদের অপসারণ করছেন। যদি আপনার ব্রাউজারটি এটির অনুমতি না দেয় তবে এই সম্পত্তিটি সেট করা আপনার পক্ষে কিছুই করবে না। আমি এখন JSONP পেতে কিছুটা চেষ্টা করার পরামর্শ দিচ্ছি। খুব কমপক্ষে, আপনি চেষ্টা করতে এবং দেখতে চাইবেন যে jQuery ক্রস-ডোমেন সমর্থন জোর করে এমন সমস্ত ব্রাউজারগুলির সমর্থন করে যা আপনি সমর্থন করার পরিকল্পনা করছেন। আমিও কি মন্তব্য করতে পারেন না অন্যান্য সমস্যার আপনি পরে পড়তে পারেন!
no.good.at.coding

253

এটি যুক্ত করুন: jQuery.support.cors = true;

এটি jQuery এ ক্রস-সাইট স্ক্রিপ্টিং সক্ষম করে (1.4x এর পরে প্রবর্তিত, আমি বিশ্বাস করি)।

আমরা jQuery (1.3.2) এর একটি সত্যই পুরানো সংস্করণ ব্যবহার করছি এবং এটি 1.6.1 এর জন্য সরিয়ে আছি। .Ajax () কল ব্যতীত সমস্ত কিছুই কাজ করছিল। উপরের লাইনটি যুক্ত করা সমস্যার সমাধান করেছে।



14
এটি আমার সমস্যার সমাধান করে, ক্রোম এবং ফায়ারফক্সে কাজ করেছে তবে আইই নয়। এটিকে আমার স্ক্রিপ্টের শীর্ষে যুক্ত করা হয়েছে এবং সমস্ত কিছু ভাল ছিল
পিটার

@ শ্রাব্ল্যাঙ্কো এটি আমার প্রোবটিও ঠিক করে দেয়, এই তথ্যটি ভাগ করে নেওয়ার জন্য ধন্যবাদ।
দেব

4
খুব ভাল ফিক্স, ইন্টারনেট এক্সপ্লোরার 9 এ আমার একই সমস্যা ছিল যখন আমি একই ডোমেইন থেকে আপেক্ষিক পথ ব্যবহার করে একটি কিলোমিটার ফাইলের জন্য অনুরোধ করছিলাম ... আইই এর রহস্য ...
মাত্তিও কন্টা

ধন্যবাদ। হ্যাঁ আমার বিশ্রাম কলগুলি 1.5 জেকুরি আপডেটের পরে বন্ধ হয়ে গেছে। এই কোড এটি স্থির করে।
আশরাফ

26

একটি পৃষ্ঠায় আমার একই ত্রুটি ছিল এবং আমি এই লাইনগুলি যুক্ত করেছি:

<!--[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]-->

এবং এটি শেষ পর্যন্ত আমার জন্য কাজ করে;) আইই 9 তে আর কোনও ত্রুটি নেই।


6
গিথুব প্রকল্প: github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest এবং XDomainRequest তথ্য: ব্লগস.এমএসএনএন / বি / ইনটার্নালস / আর্কিভ / 2010/ 05 / 13/… । মূলত, IE8 এবং IE9 XMLHttpRequest অবজেক্টে CORS সমর্থন করে না। পরিবর্তে আপনি XDomainRequest অবজেক্টটি ব্যবহার করতে বাধ্য হন (যা আরও সীমাবদ্ধ। দ্বিতীয় লিঙ্কের তথ্যটি পড়তে পারেন)।
রিচার্ডে

7

প্রস্তাবিত উত্তরগুলির কোনওোটাই আমার পক্ষে সম্পূর্ণরূপে কাজ করেনি। আমার ব্যবহারের কেসটি কিছুটা পৃথক (আইজ 9 এ এসএক্স। জসন ফাইলে একটি এজ্যাক্স করা)। সেটিং ত্রুটি jQuery.support.cors = true;থেকে মুক্তি পেয়েছে No Transportতবে আমি এখনও ত্রুটি পেয়েছি Permission denied

আই আই 9 কে এক্সডোমেনআরকোয়েস্ট ব্যবহার করতে বাধ্য করার জন্য jQuery-ajaxTransport-XDomainRequest ব্যবহার করা আমার পক্ষে কাজ করেছিল। এটি ব্যবহারের জন্য সেটিংয়ের দরকার পড়েনিjQuery.support.cors = true;


6

আমি ডাটা টাইপ = 'জসন' এর জায়গায় ডেটা টাইপ = 'জসনপ' ব্যবহার করে এটি সমাধান করি


2
এফওয়াইআই, এটি সত্যই মূল পোস্টারের অনুরোধটির জন্য কাজ করবে না যেহেতু জসনপ পোস্ট পোস্ট ক্রিয়াটি সমর্থন করে না, কেবল জিইটি করুন।
ড্যানিয়েল কক্স

হ্যাঁ, ঠিক আছে, আমি এজ্যাক্স ব্যবহার করে fbwall, গুগল + ইত্যাদি ফিড পেতে এটি ব্যবহার করেছি
অভিষেক

আমি এখনও একটি +1 দিতে যাচ্ছি কারণ এটি আমার ব্যবহারের জন্য সাহায্য করেছে, ধন্যবাদ।
মানথেরিন

0

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

এর জন্য, আমি আমার পৃষ্ঠায় একটি iframe যুক্ত করেছি যা ক্লায়েন্টের সার্ভারে থাকে। সুতরাং যখন আমরা আইফ্রেমে এবং আইফ্রেমে আমাদের ডেটা পোস্ট করি তখন ওয়েব সার্ভিসে পোস্ট করে। অতএব ক্রস ডোমেন রেফারেন্সিং মুছে ফেলা হয়।

আমরা কেবলমাত্র অনুমোদিত পৃষ্ঠাগুলির ডেটা এবং iframe থেকে ডেটা নিশ্চিত করার জন্য একটি দ্বি-উপায় উত্সের চেক যুক্ত করেছি।

আশা করি এটা সাহায্য করবে

<iframe style="display:none;" id='receiver' name="receiver" src="https://iframe-address-at-client-server">
 </iframe>

//send data to iframe
var hiddenFrame = document.getElementById('receiver').contentWindow;
hiddenFrame.postMessage(JSON.stringify(message), 'https://client-server-url');

//The iframe receives the data using the code:
window.onload = function () {
    var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
    var eventer = window[eventMethod];
    var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
    eventer(messageEvent, function (e) {
        var origin = e.origin;
        //if origin not in pre-defined list, break and return
        var messageFromParent = JSON.parse(e.data);
        var json = messageFromParent.data;

        //send json to web service using AJAX   
        //return the response back to source
        e.source.postMessage(JSON.stringify(aJAXResponse), e.origin);
    }, false);
}

0

আমার কাছে এটি সম্পূর্ণ ভিন্ন গল্প।
যেহেতু এই পৃষ্ঠার একটি ভাল অনুসন্ধান ইঞ্জিন র‌্যাঙ্কিং রয়েছে, তাই আমার এখানেও আমার মামলা এবং সমাধান যুক্ত করা উচিত।

আমি কেবলমাত্র ব্যবহৃত মডিউলগুলি বাছাই করে jqueryনিজেকে তৈরি করেছি webpack। এজাক্স সর্বদা একমাত্র ক্লু হিসাবে "পরিবহন নয়" বার্তাটি ব্যর্থ হয়েছে।

দীর্ঘ ডিবাগিংয়ের পরে, সমস্যাটি XMLHttpRequestপ্লাগযোগ্য jqueryএবং এটি ডিফল্টরূপে অন্তর্ভুক্ত নয় turns

jquery/src/ajax/xhrব্রাউজারগুলিতে কাজ করে এজাক্স তৈরি করতে আপনাকে স্পষ্টভাবে ফাইল অন্তর্ভুক্ত করতে হবে।


-1

আমি অনুরোধ url থেকে ডোমেনটি সরিয়ে কেবল এটি সমাধান করেছি।

Before: https://some.domain.com/_vti_bin/service.svc

After: /_vti_bin/service.svc

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

তাহলে ক্রস ডোমেন আজাক্স অনুরোধ সম্পর্কিত প্রশ্নে আপনি কেন উত্তর দিচ্ছেন
শায়খ

1
@ নাeম শাইখ 27, অনুরোধের প্রকৃতি (ক্রস-ডোমেন বনাম একই ডোমেন) ওপি থেকে পরিষ্কার ছিল না; আমি প্রশ্নের "সুস্পষ্ট" পরামিতি প্রদত্ত প্রশ্নটি সম্বোধন করছিলাম। নির্বিশেষে, আমি কেবল বলছি "আরে, আমিও একই ত্রুটি পেয়েছি, এখানে আমি কী করেছি" এবং আপনার এটি পছন্দ হয় বা না (অথবা এটি এসও এর পক্ষে উপযুক্ত কিনা) তা আমার পক্ষে কাজ করে। এখন, আপনি যদি ফিরে যান এবং প্রশ্নটিকে আরও নির্দিষ্ট করে দেন তবে আমার প্রতিক্রিয়াটি সম্পূর্ণ অপ্রাসঙ্গিক হবে lev
ড্রাগন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.