jQuery $ .Aaxax (), Firef। ফায়ারফক্সে "বিকল্পগুলি" REQUEST_METHOD হিসাবে প্রেরণ


330

আমি যেটিকে তুলনামূলকভাবে সহজ jQuery প্লাগইন বলে মনে করেছি তাতে সমস্যা হচ্ছে ...

প্লাগইনটিতে একটিতে অপশন যুক্ত করতে আজজ্যাক্সের মাধ্যমে পিএইচপি স্ক্রিপ্ট থেকে ডেটা আনতে হবে <select>। এজাক্স অনুরোধটি বেশ জেনেরিক:

$.ajax({
  url: o.url,
  type: 'post',
  contentType: "application/x-www-form-urlencoded",
  data: '{"method":"getStates", "program":"EXPLORE"}',
  success: function (data, status) {
    console.log("Success!!");
    console.log(data);
    console.log(status);
  },
  error: function (xhr, desc, err) {
    console.log(xhr);
    console.log("Desc: " + desc + "\nErr:" + err);
  }
});

এটি সাফারিতে কাজ করে বলে মনে হচ্ছে। ফায়ারফক্স ৩.৫- REQUEST_TYPEএ সার্ভারে সর্বদা 'অপশন' থাকে এবং $ _POST ডেটা উপস্থিত হয় না। অ্যাপাচি অনুরোধটি 'বিকল্পগুলি' টাইপ হিসাবে লগ করে:

::1 - - [08/Jul/2009:11:43:27 -0500] "OPTIONS sitecodes.php HTTP/1.1" 200 46

এই এজ্যাক্স কলটি সাফারিতে কাজ করবে, তবে ফায়ারফক্স নয়, এবং কীভাবে আমি ফায়ারফক্সের জন্য এটি ঠিক করব?

প্রতিক্রিয়া শিরোনাম
তারিখ: বুধ, 08 জুলাই 2009 21:22:17 GMT
সার্ভার: অ্যাপাচি / 2.0.59 (ইউনিক্স) পিএইচপি / 5.2.6 ডিএভি / 2
এক্স দ্বারা চালিত: পিএইচপি / 5.2.6
সামগ্রী-দৈর্ঘ্য 46
অ্যালাইভের সময়কাল শেষ রাখুন = 15, সর্বোচ্চ = 100
সংযোগ রাখুন-জীবিত
সামগ্রী-প্রকারের পাঠ্য / এইচটিএমএল

অনুরোধ শিরোনাম
হোস্ট অর্ডারফর্ম: 8888
ব্যবহারকারী-এজেন্ট মোজিলা / 5.0 (ম্যাকিনটোস; ইউ; ইন্টেল ম্যাক ওএস এক্স 10.5; এন-ইউএস; আরভি: 1.9.1) গেকো / 20090624 ফায়ারফক্স / 3.5
পাঠ্য / এইচটিএমএল, অ্যাপ্লিকেশন / এক্সএইচটিএমএল + এক্সএমএল, অ্যাপ্লিকেশন / এক্সএমএল; কিউ = 0.9, * / *; কিউ = 0.8 গ্রহণ করুন
ল্যাঙ্গুয়েজ এন-ইউ এস, এন, কিউ = 0.5
জিজিপ গ্রহণ করুন-এনকোডিং, ডিলেট করুন
স্বীকৃতি-চরসেট আইএসও -8859-1, ইউটিএফ -8; কিউ = 0.7, *; কিউ = 0.7
কিপ-অ্যালাইভ 300
সংযোগ রক্ষা করুন
উত্স http://ux.inetu.act.org
অ্যাক্সেস-নিয়ন্ত্রণ-অনুরোধ-পদ্ধতি পোস্ট
এক্স-কন্ট্রোল-রিকোয়েস্ট-শিরোনাম এক্স-অনুরোধ-সহ

ফায়ারব্যাগ আউটপুটের একটি চিত্র এখানে দেওয়া হয়েছে:


আপনি ফায়ারব্যাগ প্রতিক্রিয়া পোস্ট করতে এবং শিরোনাম অনুরোধ করতে পারেন? আমি ফায়ারফক্সে অনুরূপ কোড চালালে কোনও ত্রুটি পাচ্ছি না।
মিটমারো

ফায়ারব্যাগ থেকে শিরোনাম সম্পর্কিত তথ্য এবং একটি ছবি যুক্ত করা হয়েছে।
ফিটজগেরাল্ডস্টিল

এম্বেড থাকা ওয়েবসভারটি প্রয়োগ করার সময় কেবল একই সমস্যা হয়েছিল। জিজ্ঞাসার জন্য ধন্যবাদ :)
রবার্ট গোল্ড

আপনি যদি জাভা জ্যাকএক্স-আরএস সলিউশনগুলির সন্ধান করে থাকেন তবে এখানে দেখুন: অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন
টোবিয়াস সরানো

ফায়ার ফক্সের আচরণে কি এখন পরিবর্তন হয়েছে বলে মনে হচ্ছে? আমি কোনও বিকল্পের অনুরোধ পাই না।
বুগ

উত্তর:


169

ত্রুটির কারণ হ'ল একই উত্স নীতি। এটি কেবলমাত্র আপনার নিজের ডোমেনে XMLHTTP অনুরোধ করতে অনুমতি দেয়। পরিবর্তে আপনি একটি JSONP কলব্যাক ব্যবহার করতে পারেন কিনা তা দেখুন :

$.getJSON( 'http://<url>/api.php?callback=?', function ( data ) { alert ( data ); } );

26
ফায়ারফক্স কেন এটি করার একমাত্র ব্রাউজার? আমি একটি পোস্ট পেতে চাই না।
মাসলো

11
ক্রসাইট-পোষ্ট: অ্যাপ্লিকেশন / জেএসসন দিয়ে কন্টেন্ট-টাইপ হিসাবে পোষ্ট করার কোনও সমাধান কি কেউ জানেন?
schoetbi

13
তাহলে সমাধানটি ঠিক কী?
নিক তাই

3
এটিরও সমাধান খুঁজছেন এবং এজ্যাক্স কলের পরিবর্তে getJSON ব্যবহার করা আমার পক্ষে তা করবে না কারণ এটি অনেক বেশি সীমাবদ্ধ।
টিমো ওয়ালেনিয়াস

1
@ সোকোত্তবি এর জন্য আপনাকে সিওআরএস ব্যবহার করতে হবে যা নতুন ব্রাউজারগুলিতে ভাল সমর্থনযোগ্য ... আইইইউ -9-তে সীমিত সমর্থন, এবং সার্ভার-সাইড সমর্থন প্রয়োজন।
ট্র্যাকার 1

57

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

def send_data(request):
    if request.method == "OPTIONS": 
        response = HttpResponse()
        response['Access-Control-Allow-Origin'] = '*'
        response['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
        response['Access-Control-Max-Age'] = 1000
        # note that '*' is not valid for Access-Control-Allow-Headers
        response['Access-Control-Allow-Headers'] = 'origin, x-csrftoken, content-type, accept'
        return response
    if request.method == "POST":
        # ... 

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


প্রকৃত পোস্ট / জিইটি প্রতিক্রিয়া সম্পর্কে আপনার সম্পাদনাটি কিছুটা ভীতিজনক; যদি কেউ তা নিশ্চিত করতে পারেন, তবে দয়া করে আমাদের এখানে জানান!
আরজান

আমি এটি বাগ বা কোনও বৈশিষ্ট্য হিসাবে জানি কিনা জানি না তবে মনে হয় এটি অন্য কেউও লক্ষ্য করেছেন। উদাহরণস্বরূপ কোডেমানিয়াক.ডি /?p=62 দেখুন এবং "খালি রেসপন্স বডি" অনুসন্ধান করুন
জুহা পালোমকি

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

1
আমি বিশ্বাস করি হেডারের Access-Control-Allow-Headersমান থাকা উচিত x-csrf-token, না x-csrftoken
জেলিকেলকিট

16

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

আমি সার্ভারে একটি বিকল্প অনুরোধ হ্যান্ডলার তৈরি করে এই কাজটি করতে সক্ষম হয়েছি, যেটি 'অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন' প্রতিক্রিয়া শিরোনামকে '*' এ সেট করে। ' Http://someurl.com ' এর মতো নির্দিষ্ট কিছুতে সেট করে আপনি আরও সীমাবদ্ধ হতে পারেন । এছাড়াও, আমি এটি পড়েছি বলে মনে করা হয়, আপনি একাধিক উত্সের কমা-বিচ্ছিন্ন তালিকা নির্দিষ্ট করতে পারেন, তবে আমি এটি কাজ করতে পারি না।

ফায়ারফক্স কোনও গ্রহণযোগ্য 'অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন' মানের সাথে বিকল্পগুলির অনুরোধটির প্রতিক্রিয়াটি পেয়ে গেলে এটি পোস্টের অনুরোধটি প্রেরণ করে।


15

সম্পূর্ণ-অ্যাপাচি ভিত্তিক সমাধান ব্যবহার করে আমি এই সমস্যাটি সমাধান করেছি। আমার vhost / htaccess এ আমি নিম্নলিখিত ব্লকটি রেখেছি:

# enable cross domain access control
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"

# force apache to return 200 without executing my scripts
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule .* / [R=200,L]

অ্যাপাচি যখন আপনার টার্গেট স্ক্রিপ্টটি কার্যকর করে তখন কী ঘটে তার উপর নির্ভর করে আপনার পরবর্তী অংশের প্রয়োজন হতে পারে না। ক্রেডিট পরবর্তী অংশের জন্য বন্ধুত্বপূর্ণ সার্ভারফল্ট লোকের কাছে যায়।


আপনার উত্তরটি আমাকে সহায়তা করেছিল, তবে যদি করসের পিছনে কিছু যুক্তি প্রয়োজন তবে এটি সম্পূর্ণ সমাধান করে না।
রাতটা টাটা

10

প্রতিক্রিয়াশীল স্ক্রিপ্টের শীর্ষে এই পিএইচপি কাজ করছে বলে মনে হচ্ছে। (ফায়ারফক্স ৩.6.১১ এর সাথে। আমি এখনও অনেক পরীক্ষা চালিয়েছি না))

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
if(array_key_exists('HTTP_ACCESS_CONTROL_REQUEST_HEADERS', $_SERVER)) {
    header('Access-Control-Allow-Headers: '
           . $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
} else {
    header('Access-Control-Allow-Headers: *');
}

if("OPTIONS" == $_SERVER['REQUEST_METHOD']) {
    exit(0);
}

এই স্বাদ ব্যাপার হতে পারে, কিন্তু সবসময় ঐ প্রতিক্রিয়া হেডার পাঠানোর (জন্য এছাড়াও GET, POST, ...) একটি বিট অত্যধিক আমার পছন্দ অনুসারে হয়। (এবং, আমি অবাক হয়েছি যে সবসময়
আরজান

3
এটিতে মোড়ুন (S _ সার্ভার ['HTTP_ORIGIN'])। যদি সেই শিরোনামটি থাকে তবে এটি একটি কর্স-অনুরোধ, যদি না হয় তবে ভাল, কিছু প্রেরণের দরকার নেই।
ওডিনহো - ভেলমন্ট

7

গুগল ম্যাপে অনুরোধ প্রেরণে আমার একই সমস্যা ছিল এবং ডেটা টাইপ ব্যবহারের জন্য সমাধান jQuery 1.5 এর সাথে বেশ সহজ dataType: "jsonp"


12
পদ্ধতি POST এর সাথে বেমানান।
পাভেল ভ্লাসভ

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

6

কুলপ্রিট অপশন বিকল্পটি ব্যবহার করে প্রিফলাইট অনুরোধ

HTTP অনুরোধ পদ্ধতির জন্য যা ব্যবহারকারীর ডেটাগুলিতে পার্শ্ব-প্রতিক্রিয়া সৃষ্টি করতে পারে (বিশেষত, GET ব্যতীত HTTP পদ্ধতিগুলির জন্য, বা নির্দিষ্ট MIME প্রকারের সাথে POST ব্যবহারের জন্য), স্পেসিফিকেশন ম্যান্ডেটগুলি যা ব্রাউজারগুলি অনুরোধটিকে "preflight" করে, থেকে সমর্থিত পদ্ধতিগুলি চাওয়া হয় HTTP অপশন অনুরোধ পদ্ধতি সহ সার্ভার, এবং তারপরে, সার্ভারের "অনুমোদনের" পরে, প্রকৃত অনুরোধটি প্রকৃত HTTP অনুরোধ পদ্ধতির সাথে প্রেরণ করা হবে।

ওয়েব স্পেসিফিকেশন উল্লেখ করুন: https://developer.mozilla.org/en-US/docs/Web/HTTP/Acecess_control_CORS

আমি এনজিন্স কনফেলে নিম্নলিখিত লাইনগুলি যুক্ত করে সমস্যার সমাধান করেছি।

    location / {
               if ($request_method = OPTIONS ) {
                   add_header Access-Control-Allow-Origin  "*";
                   add_header Access-Control-Allow-Methods "POST, GET, PUT, UPDATE, DELETE, OPTIONS";
                   add_header Access-Control-Allow-Headers "Authorization";
                   add_header Access-Control-Allow-Credentials  "true";
                   add_header Content-Length 0;
                   add_header Content-Type text/plain;
                   return 200;
               }
    location ~ ^/(xxxx)$ {
                if ($request_method = OPTIONS) {
                    rewrite ^(.*)$ / last;
                }
    }

1
এই উত্তরটি খুব সহায়ক ধন্যবাদ। ব্রাউজারটি অপশন বিকল্পের সাথে প্রিফলাইট অনুরোধ প্রেরণ করছে এই বিষয়টি স্পষ্ট নয়।
নরম্যানগর্ম্যান

4

আমি উত্স ১.৩.২-এর মাধ্যমে সন্ধান করছিলাম, জেএসএনপি ব্যবহার করার সময়, অনুরোধটি গতিশীলভাবে একটি স্ক্রিপ্ট উপাদান তৈরি করে অনুরোধ করা হয় যা ব্রাউজারগুলি একই-ডোমেন নীতিমালা পেরিয়ে যায়। স্বাভাবিকভাবেই, আপনি কোনও স্ক্রিপ্ট উপাদান ব্যবহার করে একটি পোষ্ট অনুরোধ করতে পারবেন না, ব্রাউজারটি জিইটি ব্যবহার করে ফলাফল আনবে।

আপনি একটি জেএসএনপি কলটির অনুরোধ করার সাথে সাথে, স্ক্রিপ্ট উপাদানটি উত্পন্ন হয় না, কারণ এটি কেবল তখনই ঘটে যখন এজেএক্স কলের প্রকারটি জিইটি তে সেট করা থাকে।

http://dev.jquery.com/ticket/4690


3

আমাদের এএসপি.নেটের সাথে এই জাতীয় সমস্যা ছিল। $.postপেজহ্যান্ডলারফ্যাক্টরির কারণে কিছু এইচটিএমএল বিষয়বস্তু পাওয়ার জন্য jQuery চালানোর চেষ্টা করার সময় আমাদের আইআইএস একটি অভ্যন্তরীণ সার্ভার ত্রুটি ফিরিয়ে দিচ্ছিল কেবলমাত্র প্রতিক্রিয়া করতে সীমাবদ্ধ ছিলGET,HEAD,POST,DEBUG ক্রিয়াগুলির । সুতরাং আপনি সেই বিধিনিষেধটি তালিকায় "বিকল্পগুলি" ক্রিয়া যুক্ত করতে বা "সমস্ত ক্রিয়াগুলি" নির্বাচন করতে পারেন

আপনার আইআইএস ম্যানেজারে আপনি এটি সংশোধন করতে পারবেন, আপনার ওয়েবসাইট নির্বাচন করে, তারপর হ্যান্ডলার ম্যাপিংস নির্বাচন করুন, আপনার প্রয়োজন অনুসারে * .apx ফাইলগুলির জন্য আপনার পেজহ্যান্ডলারফ্যাক্টরিতে ডাবল ক্লিক করুন (আমরা ফ্রেমওয়ার্ক 4.0 এর সাথে ইন্টিগ্রেটেড অ্যাপ্লিকেশন পুল ব্যবহার করি)। অনুরোধ বিধিনিষেধগুলিতে ক্লিক করুন, তারপরে ভার্বস ট্যাবনে যান এবং আপনার পরিবর্তনটি প্রয়োগ করুন।

এখন আমাদের $.postঅনুরোধ প্রত্যাশার মতো কাজ করছে :)


2

আপনার ফর্মের actionইউআরএলটিতে wwwডোমেনের অংশটি অন্তর্ভুক্ত রয়েছে কিনা তা পরীক্ষা করুন , আপনি খোলার মূল পৃষ্ঠাটি বাইরে ছাড়া হয়েছে কিনা www

সাধারণত ক্যানোনিকাল urls এর জন্য সম্পন্ন ..

আমি এই নিবন্ধটিতে হোঁচট খাওয়ার আগে কয়েক ঘন্টা লড়াই করেছি এবং ক্রস ডোমেনের ইঙ্গিতটি পেয়েছি।


2

আমি মনে করি যে o.url = 'index.php'এবং যদি এই ফাইলটি বিদ্যমান থাকে তবে ঠিক আছে এবং কনসোলে একটি সাফল্যের বার্তা ফিরে আসছে। আমি url ব্যবহার করলে এটি একটি ত্রুটি ফেরায়:http://www.google.com

একটি পোস্ট অনুরোধ কেন সরাসরি ব্যবহার না করছেন তাহলে $ .post পদ্ধতি:

$.post("test.php", { func: "getNameAndTime" },
    function(data){
        alert(data.name); // John
        console.log(data.time); //  2pm
    }, "json");

এটা এত সহজ।


এর সাথে একই জিনিসটি পেয়েছেন ... ভেবেছিলাম আমার aj .ajax () ব্যবহার করা উচিত যাতে ত্রুটি শর্তের বিষয়ে আমি কমপক্ষে কিছু ডিবাগের তথ্য পেতে পারি ..
ফিটজগেরাল্ডস্টিল

1

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

আমি কীভাবে জাভাস্ক্রিপ্টের মাধ্যমে ক্রস-ডোমেন POST অনুরোধ পাঠাব?


1

এর সমাধান হ'ল:

  1. ডেটা টাইপ ব্যবহার করুন: json
  2. যোগ &callback=?আপনার ইউআরএল

এটি ফেসবুক এপিআই এবং ফায়ারফক্সের সাথে কল করার ক্ষেত্রে কাজ করেছিল। ফায়ারব্যাগ উপরের শর্তগুলির GETপরিবর্তে OPTIONS(উভয়টি) ব্যবহার করছে।




0

বিকল্পটি যুক্ত করার চেষ্টা করুন:

ডেটা টাইপ: "জেসন"


2
যে কাজ করেছে, কেন জসনকে ক্রস-ডোমেন অনুরোধগুলির জন্য "নিরাপদ" মনে করা হচ্ছে?
নিক তাই

0
 function test_success(page,name,id,divname,str)
{ 
 var dropdownIndex = document.getElementById(name).selectedIndex;
 var dropdownValue = document.getElementById(name)[dropdownIndex].value;
 var params='&'+id+'='+dropdownValue+'&'+str;
 //makerequest_sp(url, params, divid1);

 $.ajax({
    url: page,
    type: "post",
    data: params,
    // callback handler that will be called on success
    success: function(response, textStatus, jqXHR){
        // log a message to the console
        document.getElementById(divname).innerHTML = response;

        var retname = 'n_district';
        var dropdownIndex = document.getElementById(retname).selectedIndex;
        var dropdownValue = document.getElementById(retname)[dropdownIndex].value;
        if(dropdownValue >0)
        {
            //alert(dropdownValue);
            document.getElementById('inputname').value = dropdownValue;
        }
        else
        {
            document.getElementById('inputname').value = "00";
        }
        return;
        url2=page2; 
        var params2 = parrams2+'&';
        makerequest_sp(url2, params2, divid2);

     }
});         
}

প্রশ্নটি ইতিমধ্যে 6 মাস আগে উত্তর দেওয়া হয়েছিল। এটি কীভাবে এটি সমাধান করে?
বারমার

0

ফেসবুক এপিআই ব্যবহার করার চেষ্টা করার সাথে আমারও একই সমস্যা ছিল।

প্রফ্লাইটেড অনুরোধটি প্রেরণ করা হয়নি এমন একমাত্র সামগ্রী টাইপটি কেবল পাঠ্য / সরল বলে মনে হচ্ছে ... মোজিলায় উল্লিখিত বাকী প্যারামিটারগুলি এখানে নয়

  • কেন এটি একমাত্র ব্রাউজার যা এটি করে?
  • ফেসবুক কেন প্রিফলাইট অনুরোধটি জানে এবং গ্রহণ করে না?

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


0

আপনার সার্ভার সাইডে কিছু কাজ করা দরকার। আমি দেখতে পাচ্ছি যে আপনি সার্ভারের পাশে পিএইচপি ব্যবহার করছেন তবে। নেট ওয়েব অ্যাপ্লিকেশনটির সমাধান এখানে রয়েছে: jQuery.ajax এ 'অ্যাপ্লিকেশন / জেসন' তে সামগ্রী-টাইপ সেট করা যায় না Can

পিএইচপি স্ক্রিপ্টে একই করুন এবং এটি কাজ করবে। সহজভাবে: প্রথম অনুরোধ ব্রাউজারটি সার্ভারকে জিজ্ঞাসা করছে যে এই জাতীয় ডেটা প্রকারের সাথে প্রেরণের অনুমতি দেওয়া হয় এবং দ্বিতীয় অনুরোধটি যথাযথ / অনুমোদিত।


0

নিম্নলিখিত যুক্ত করার চেষ্টা করুন:

dataType: "json",
ContentType: "application/json",
data: JSON.stringify({"method":"getStates", "program":"EXPLORE"}),  

0

আমি যখন অন্য সার্ভারে হোস্ট করা আমার অ্যাপাচি সোলারে ডেটা পোস্ট করতে চাই তখন আমি অনুরূপ সমস্যা সমাধানের জন্য একটি প্রক্সি ইউআরএল ব্যবহার করি। (এটি সঠিক উত্তর নাও হতে পারে তবে এটি আমার সমস্যা সমাধান করে))

এই ইউআরএলটি অনুসরণ করুন: প্রক্সিংয়ের জন্য মোড-পুনর্লিখন ব্যবহার করে , আমি এই পোস্টটি আমার httpd.conf এ যুক্ত করছি:

 RewriteRule ^solr/(.*)$ http://ip:8983/solr$1 [P]

অতএব, আমি http: // আইপি: 8983 / সোলার / * এ ডেটা পোস্ট করার পরিবর্তে কেবল সোলারে ডেটা পোস্ট করতে পারি । তারপরে এটি একই উত্সে ডেটা পোস্ট করা হবে।


0

আমার কাছে ইতিমধ্যে এই কোডটি পিএইচপি তে আমার কর্স পরিস্থিতি ভালভাবে পরিচালনা করছে:

header( 'Access-Control-Allow-Origin: '.CMSConfig::ALLOW_DOMAIN );
header( 'Access-Control-Allow-Headers: '.CMSConfig::ALLOW_DOMAIN );
header( 'Access-Control-Allow-Credentials: true' );

এবং এটি স্থানীয়ভাবে এবং দূরবর্তীভাবে সূক্ষ্মভাবে কাজ করছিল, তবে দূরবর্তী যখন আপলোডগুলির জন্য নয়।

অ্যাপাচি / পিএইচপি বা আমার কোডের সাথে কিছু ঘটেছে, আমি এটি অনুসন্ধান করার জন্য বিরক্ত করিনি, আপনি যখন অপশনগুলির জন্য অনুরোধ করবেন তখন এটি আমার শিরোনামকে কর্স বিধি দিয়ে তবে 302 ফলাফলের সাথে ফেরত দেয়। সুতরাং আমার ব্রাউজারটি গ্রহণযোগ্য পরিস্থিতি হিসাবে স্বীকৃতি দেয় না।

@ মার্ক ম্যাকডোনাল্ড উত্তরের উপর ভিত্তি করে আমি যা করেছি, তা এই শিরোনামের পরে এই কোডটি রেখেছি:

if( $_SERVER['REQUEST_METHOD'] === 'OPTIONS' )
{
    header("HTTP/1.1 202 Accepted");
    exit;
}

এখন, OPTIONSএটি অনুরোধ করার সময় কেবল শিরোনাম এবং 202 ফলাফল প্রেরণ করবে।


-1

দয়া করে পরামর্শ দিন:

জেএসএনপি কেবল জিইটি অনুরোধ পদ্ধতির সমর্থন করে।

* ফায়ারফক্সের মাধ্যমে অনুরোধ পাঠান : *

$.ajax({
   type: 'POST',//<<===
   contentType: 'application/json',
   url: url,
   dataType: "json"//<<=============
    ...
});

উপরোক্ত অনুরোধটি বিকল্পের মাধ্যমে প্রেরণ করুন (যখন ==> টাইপ করুন: 'পোস্ট' ) !!!!

$.ajax({
    type: 'POST',//<<===
    contentType: 'application/json',
    url: url,
    dataType: "jsonp"//<<==============
    ...
});

তবে উপরের অনুরোধটি জিইটি (যখন ==> টাইপ করুন: 'পোস্ট' ) প্রেরণ করুন !!!!

আপনি যখন "ক্রস-ডোমেন যোগাযোগে" থাকবেন তখন মনোযোগ দিন এবং সাবধান হন।

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