শিরোনাম সেট। অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-উত্স মধ্যে। Htaccess কাজ করে না


91

আমার .htaccessশিরোনাম সেটিংস কেন কাজ করে না তা আমি বুঝতে পারি না।

আমার .htaccessফাইল সামগ্রী:

Header set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

তবে আমি যখন Headerএগুলি সরিয়ে এগুলিতে যুক্ত করি index.phpতখন সমস্ত কিছু ঠিকঠাক হয়।

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");

আমি কী মিস করছি?

উত্তর:


135

এই কাজ করা উচিত:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

46
a2enmod headers
অ্যাপাচি

4
এটি ঠিক করা হয়েছে: "অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-পদ্ধতি দ্বারা পদ্ধতি PUT অনুমোদিত নয়"
রাহুল প্রসাদ

6
এছাড়াও, Header setএই ক্ষেত্রে ব্যবহার করা ভাল । যদি কোডটি পরিবর্তন করা হয় এবং এটি শিরোনামটি সেট করে, অ্যাপাচি করিয়ে দিলে header addডাবল ** হেডার পাঠানো হবে। এটি উদাহরণস্বরূপ রেস্টাঙ্গুলারের মতো ক্লায়েন্টকে ভেঙে ফেলবে।
জুলিয়ান

4
যদি প্রয়োজন হয় তা ভুলে যাবেন নাHeader add Access-Control-Allow-Credentials "true"
মার্কো মার্শালা

20

কেবল রেকর্ডের জন্য, আমি ঠিক একই সমস্যাটিতে চলেছিলাম এবং উত্তরগুলির কোনওটিই কাজ করে নি।

আমি একটি শিরোলেখ পরীক্ষক সরঞ্জাম ব্যবহার করেছি: http://www.webconfs.com/http-header-check.php

আমি আমার আইপি ( http://192.0.2.1/upload) দিয়ে পরীক্ষা করছিলাম এবং যা ফিরে এসেছিল তা নিম্নলিখিত:

HTTP/1.1 301 Moved Permanently => 
Date => Sat, 10 Jan 2015 04:03:35 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
Location => http://192.0.2.1/upload/
Content-Length => 380
Connection => close
Content-Type => text/html; charset=iso-8859-1

একটি পুনঃনির্দেশ ঘটছিল এবং এজ্যাক্স অনুরোধটি পুনর্নির্দেশগুলি সম্মান / অনুসরণ করে না।

এটি ডোমেনের শেষে নিখোঁজ স্ল্যাশ হিসাবে দেখা গেছে ( http://192.0.2.1/upload / )

আমি আবার স্ল্যাশ দিয়ে আবার পরীক্ষা করেছি এবং এটি নীচে পেয়েছি। স্ক্রিপ্টেও একটি স্ল্যাশ যুক্ত হয়েছে এবং এটি এখন কাজ করছে।

HTTP/1.1 200 OK => 
Date => Sat, 10 Jan 2015 04:03:53 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By => PHP/5.3.8
Access-Control-Allow-Origin => *
Access-Control-Allow-Methods => PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Headers => *
Content-Length => 1435
Connection => close
Content-Type => text/html

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


4
এটি সমাধানের চেষ্টা করে আমার এখন 11 টি ট্যাব খোলা আছে। এই উত্তরটি আরও জায়গায় হওয়া উচিত।
জেডাভিস

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

11

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

আমি একটি .htaccess ফাইল লিখেছি, আমার ক্রিয়া পৃষ্ঠার মতো একই ফোল্ডারে রেখেছি। .Htaccess ফাইলের সামগ্রী এখানে রয়েছে:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

এখানে আমার এজ্যাক্স কলটি রয়েছে:

    $.ajax({
        url: 'http://www.mydomain.com/myactionpagefolder/gbactionpage.php',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        beforeSend: beforeSendHandler,
        success: completeHandler,
        error: errorHandler,
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });

রেফারেন্সের জন্য এই নিবন্ধটি দেখুন:

শিরোনাম সেট। অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-উত্স মধ্যে। Htaccess কাজ করে না


8

সাবধান:

 Header add Access-Control-Allow-Origin "*"

প্রত্যেকের অ্যাক্সেস দেওয়ার পক্ষে এটি মোটেও বিচার্য নয়। কেবলমাত্র বিশ্বস্ত হোস্টকে জানার জন্য একটি তালিকা অনুমতি দেওয়া ভাল rable

Header add Access-Control-Allow-Origin "http://aaa.example"
Header add Access-Control-Allow-Origin "http://bbb.example"
Header add Access-Control-Allow-Origin "http://ccc.example"

শুভেচ্ছা,


4
এটি কাজ করবে না। অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-উত্স একাধিক মান অনুমোদিত নয় allowed উত্সর অনুরোধ শিরোনামের মানের উপর ভিত্তি করে আপনাকে গতিময়ভাবে শিরোনাম সেট করতে হবে।
কোয়ান্টিন

7

আমি অ্যাপাচি মডিউল শিরোনাম a2enmod শিরোনাম সক্রিয় করেছি, এবং সমস্যাটি সমাধান করা হয়েছে।


লগের ত্রুটিগুলি পরিষ্কার ছিল না যে আমি যে পরিবর্তনগুলি করছিলাম তা ব্যর্থ হবে এবং এই উত্তরটি বেশ কার্যকরভাবে সহায়তা করেছিল। sudo a2enmod headersএবং এটি পুনরায় চালু করে এটি কাজ করে!
চঞ্চা

3

বাহ্যিক রুট ফোল্ডারের .htaccess এ এটি ব্যবহার করে দেখুন

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

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

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "http://example.com"
</IfModule>

3

আমি হেডার-চেকার সাইট http://www.webconfs.com/http-header-check.php লিঙ্কটির জন্য মিরোর উত্তরটি +1 করেছি । এটি প্রতিবার আপনি যখন ব্যবহার করেন তখন এটি একটি অসতর্কতাযুক্ত বিজ্ঞাপনটিকে পপ আপ করে, তবে তা সত্ত্বেও, অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স শিরোনামের উপস্থিতি যাচাইয়ের জন্য এটি খুব দরকারী।

আমি আমার ওয়েব পৃষ্ঠায় জাভাস্ক্রিপ্ট থেকে একটি .json ফাইল পড়ছি। আমি খুঁজে পেয়েছি যে আইই 11 এ আমার ওয়েব পৃষ্ঠাটি দেখার সময় আমার .htaccess ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করা সমস্যার সমাধান করেছে (সংস্করণ 11.447.14393.0):

<FilesMatch "\.(json)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

আমি নিম্নলিখিতগুলি /etc/httpd.conf (অ্যাপাচের কনফিগারেশন ফাইল) এ যুক্ত করেছি:

AllowOverride All

শিরোনাম-পরীক্ষক সাইট যাচাই করেছে যে অ্যাক্সেস-নিয়ন্ত্রণ-অনুমোদন-অরিজিনের শিরোনামটি এখন পাঠানো হচ্ছে (ধন্যবাদ, মিরো!)

যাইহোক, ফায়ারফক্স 50.0.2, অপেরা 41.0.2353.69 এবং এজ 38.14393.0.0 সমস্ত অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স শিরোনাম ছাড়াই ফাইলটি আনতে পারে । (দ্রষ্টব্য: তারা আইপি ঠিকানাগুলি চেক করতে পারে, যেহেতু আমি যে দুটি ডোমেন ব্যবহার করছিলাম সেগুলি একই আইপিভি 4 ঠিকানায় একই সার্ভারে হোস্ট করা হয়েছে))

তবে, ক্রোম 54.0.2840.99 মি (-৪-বিট) অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স শিরোনামকে উপেক্ষা করে এবং ভুলভাবে রিপোর্ট করে:

অনুরোধকৃত উত্সটিতে কোনও 'অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স' শিরোনাম উপস্থিত নেই। মূল ' {mydomain} ' এ অ্যাক্সেসের অনুমতি নেই।

আমি মনে করি এটি কিছুটা "প্রথম" হয়ে উঠেছে। আইই সঠিকভাবে কাজ করছে; ক্রোম, ফায়ারফক্স, অপেরা এবং এজ সব বগি; এবং ক্রোম সবচেয়ে খারাপ । এটি কি সাধারণ মামলার একেবারে বিপরীত নয়?


0

কোনও কাজ না করে আধা দিন কাটানোর পরে। যদিও সবকিছু কাজ করছে শিরোনাম চেক পরিষেবা ব্যবহার করে। কাজের ফায়ারওয়াল তাদের কেড়ে ফেলছিল


0

এটা চেষ্টা কর:

<IfModule mod_headers.c>
     Header set Access-Control-Allow-Credentials true
     Header set Access-Control-Allow-Origin "your domain"
     Header set Access-Control-Allow-Headers "X-Requested-With"
</IfModule>

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


0

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

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