htaccess অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-উত্স


134

আমি এমন স্ক্রিপ্ট তৈরি করছি যা অন্য সাইটে বাহ্যিকভাবে লোড হয়। এটি সিএসএস এবং এইচটিএমএল লোড করে এবং নিজের সার্ভারগুলিতে সূক্ষ্মভাবে কাজ করে।

যাইহোক, আমি যখন অন্য ওয়েবসাইটে এটি চেষ্টা করি তখন এটি এই ভয়াবহ ত্রুটিটি দেখায়:

Access-Control-Allow-Origin

এখানে আপনি এটি পুরোপুরি লোড দেখতে পাবেন: http://tzook.info/bot/

তবে এই অন্যান্য ওয়েবসাইটে এটি ত্রুটিটি দেখায়: http://cantloseight.co/robot/

আমি লোডিং স্ক্রিপ্টটি jsfiddle এ আপলোড করেছি: http://jsfiddle.net/TL5LK/

আমি এইচটিএক্সেসি ফাইলটি সম্পাদনার চেষ্টা করেছি:

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

বা এই মত:

Header set Access-Control-Allow-Origin *

তবে এটি এখনও কাজ করে না।

উত্তর:


270

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

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

এবং যদি এটি শুধুমাত্র .js স্ক্রিপ্টগুলির উদ্বেগ করে তবে আপনার উপরের কোডটি মোড়ানো উচিত:

<FilesMatch "\.(js)$">
...
</FilesMatch>

6
ব্যবহার সম্পর্কে দুর্দান্ত পরামর্শ FilesMatch
Nate

1
যদি আমরা ফাইলম্যাচ ব্লক যুক্ত করে ফাইলগুলি মিলি, তবে কী করবে *?
শেনকওয়েন

এবং এটি করার পরে আমার কি সার্ভারটি পুনরায় চালু করতে হবে? আমি উপরের কোডটি প্রয়োগ কিন্তু এটি এখনও আমাকে \ .json অ্যাক্সেস দেওয়া হবে না আমি পরিবর্তন jsকরতে json
শেনকওয়েন

3
@ শেনকউইন যে *কোনও মূল ডোমেনটিকে এই সংস্থানটিতে অ্যাক্সেস করার অনুমতি দেয়। এটি সংস্থানগুলির তালিকা নয়, তবে উল্লেখযোগ্য ডোমেনগুলির একটি তালিকা।
স্পার্ক করুন

3
যদি এটি কাজ না করে, আপনার headersমডিউলটি সক্ষম করার চেষ্টা করা উচিত :a2enmod headers
জোয়াকান ও

53

কেউ বলছেন না যে আপনারও মোড_হেডার সক্ষম করতে হবে, সুতরাং যদি এখনও কাজ না করে থাকে তবে এটি চেষ্টা করে দেখুন:

(নিম্নলিখিত টিপস উবুন্টুতে কাজ করে, অন্যান্য বিতরণ সম্পর্কে জানেন না)

আপনি লোড মডিউলগুলির সাথে তালিকাটি পরীক্ষা করতে পারেন

apache2ctl -M

Mod_headers সক্ষম করতে আপনি ব্যবহার করতে পারেন

a2enmod headers

অবশ্যই অ্যাপাচে কোনও পরিবর্তন হওয়ার পরে আপনাকে এটি পুনরায় চালু করতে হবে:

/etc/init.d/apache2 restart

তারপরে আপনি ব্যবহার করতে পারেন

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

এবং যদি mod_headers সক্রিয় না থাকে তবে এই লাইনটি কিছুই করবে না। আপনি যদি ক্লজটি ছেড়ে যান Header set Access-Control-Allow-Origin "*"এবং আপনার কনফিগারেশনে কেবল যুক্ত করতে পারেন তবে Mod_headers সক্রিয় না থাকলে এটি শুরু করার সময় ত্রুটি ছুঁড়ে ফেলা উচিত।


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

1
আমার মোড_হেডাররা সক্রিয় রয়েছে এবং এই লাইনটি .htaccess (উল্লিখিত হিসাবে একই স্থান) এ যুক্ত করেছে, তবে এখনও এই ত্রুটিটি পাচ্ছে: প্রিফলাইটের প্রতিক্রিয়াতে অবৈধ এইচটিটিপি স্থিতি কোড রয়েছে 400..প্লিজ পরামর্শ দেয়!
সুশীলম

1
মোড_হেডারগুলি ছিল গায়েব জিনিস! এটি .htaccess নিয়মের সাথে পুরোপুরি কাজ করছে। ধন্যবাদ.
অ্যান্ডি

@ সাচিনস একটি 400 ত্রুটি পাওয়া যায় নি, 500 সার্ভার ত্রুটি। সেখানে শুরু করুন।
অ্যান্ডি

30

আমার অভিজ্ঞতা থেকে;

যদি এটা ভিতর থেকে কাজ করে না phpএই কাজটি .htaccessএটা আমার জন্য কাজ

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin http://www.vknyvz.com  
    Header set Access-Control-Allow-Credentials true
</IfModule>
  • আপনার এজ্যাক্স অনুরোধ প্যারামের উপর নির্ভর করে শংসাপত্রগুলি সত্য বা মিথ্যা হতে পারে

এটি আমার পক্ষে কাজ করে নি তবে আমি পিএইচপি, একই নীতিতে কাজ করতে সক্ষম হয়েছি।
রেভনোহাহ

16

.htaccessআপনার ফন্টগুলি অ্যাক্সেস করতে সমস্যা হলে আপনার ফন্ট ফোল্ডারে নিম্নলিখিত নির্দেশাবলীর সাথে একটি ফাইল যুক্ত করুন । .Css বা .js ফাইলগুলির সাহায্যে সহজেই পরিবর্তন করা যায় ।

<FilesMatch "\.(eot|ttf|otf|woff)$">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>

1
এটি লক্ষ করা উচিত যে উপরের <FilesMatch>নির্দেশটি অপ্রয়োজনীয়, যদি উপরে বর্ণিত হিসাবে আপনার .htaccessফাইলটি আপনার ফন্ট ডিরেক্টরিতে থাকে এবং আপনার ফন্ট ডিরেক্টরিতে কেবল থাকে .eot,। ttf, .otfএবং / অথবা .woffফাইল।
মেসাগোমা

9

অন্যান্য উত্তরগুলি আমার পক্ষে কার্যকর হয়নি, এটি এপাচি 2 এর কৌশলটি শেষ করেছিল:

1) শিরোনাম মোড সক্ষম করুন:

sudo a2enmod headers

2) /etc/apache2/mods-enabled/headers.confফাইলটি তৈরি করুন এবং সন্নিবেশ করুন:

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

3) আপনার সার্ভার পুনরায় চালু করুন:

sudo service apache2 restart


এটি আমার উবুন্টু 16.10 সার্ভারে আমার জন্য কাজ করা একমাত্র সমাধান।
হাঁটকি

এটি আমার জন্যও কাজ করেছিল। আমি উবুন্টু 16.04 সার্ভার ব্যবহার করছি। ধন্যবাদ.
jedm

উবুন্টু 18.04 এ আমার জন্য কাজ করেছেন। ফায়ারফক্স .0০.০.১ কেবল অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-অরিজিনের শিরোনাম দিয়ে খুশি ছিল না, এবং আমাকে অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-পদ্ধতিগুলিও যুক্ত করতে হয়েছিল।
বোরিজ্জেডজ

@ সঙ্গোলোলো আমি সেন্টোস in এ অ্যাপাচি-র জন্য এই ফাইলটি সনাক্ত করতে পারি নি I / etc / httpd ডিরেক্টরিতে আমি সর্বত্র looked আপনি কি দয়া করে আমাকে জানাতে পারেন আমি কীভাবে এটি সেন্টোজে প্রয়োগ করতে পারি?
মইনউদ্দিন

@ মাইনুদ্দিন, দুঃখিত, আমি সেন্টোসের সাথে পরিচিত নই। অন্য আশা রাখি, কেউ ঐকতান পারবেন না।
songololo

7

জেন্ডার ফ্রেমওয়ার্ক 2.0 এ আমার এই সমস্যা ছিল had দুটি উপায়ে সমাধান করা যায়। Htaccess বা php শিরোনাম আমি পছন্দ করি। Htaccess তাই আমি সংশোধিত .htaccess থেকে:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

প্রতি

RewriteEngine On

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

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

এবং এটি কাজ শুরু


এটি আমার দিনটি বাঁচিয়েছে, পিএইচপি কডডন্ট কাজ, তাই এইচটিচ্যাক্স এটি করেছে।
রিলেম

4

বিটিডব্লিউ: .htaccess কনফিগারেশন অবশ্যই API এ হোস্টিং সার্ভারে করা উচিত। উদাহরণস্বরূপ, আপনি x.com ডোমেনে একটি AngularJS অ্যাপ্লিকেশন তৈরি করেছেন এবং y.com এ একটি রেস্ট এপিআই তৈরি করুন, আপনার y.com এর মূল ফোল্ডারে .htaccess ফাইলে এক্সট্রোল-কন্ট্রোল-অলজিন উত্স "*" সেট করা উচিত .কম :)

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

এছাড়াও যেমন উল্লেখ করা হয়েছে লুকাস নিশ্চিত করে নিন যে আপনি যদি অ্যাপাচি ব্যবহার করেন তবে আপনি mod_headers সক্ষম করেছেন


1

আপনার পুনর্নির্দেশ ঘটছে না তা নিশ্চিত করুন। আপনি যদি URL এ ট্রেলিং স্ল্যাশ অন্তর্ভুক্ত না করেন তবে এটি ঘটতে পারে।

আরও বিশদে এই উত্তরটি দেখুন - https://stackoverflow.com/a/27872891/614524


0

আপনার হোস্ট যদি পিভিএন বা ডেডিকেটেড না থাকে তবে সার্ভার পুনরায় আরম্ভ করা আলাদা।

আমার কাছ থেকে আরও ভাল সমাধান, কেবল আপনার সিএসএস ফাইল সম্পাদনা করুন (অন্য কোনও ডোমেন বা আপনার সাবডোমেনে) যা ফন্টকে ইওট, ডাব্লু ইত্যাদি আপনার উত্স (আপনার ডোমেন বা www আপনারডোমেন) বলে call এটি আপনার সমস্যার সমাধান করবে।

আমার অর্থ, সিএসএস-এ আপেক্ষিক ইউআরএল উত্স ডোমেনে সম্পাদনা করুন

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