কারণ অ্যাঙ্গুলারজেএস-এর সাথে সিওআরএস এবং এইচটিপি প্রমাণীকরণ ব্যবহার করা জটিল হতে পারে আমি একটি শেখা পাঠ ভাগ করে নেওয়ার জন্য প্রশ্নটি সম্পাদনা করেছি। প্রথমে আমি ইগরজগকে ধন্যবাদ জানাতে চাই। তার উত্তর আমাকে অনেক সাহায্য করেছিল। দৃশ্যপটটি নিম্নরূপ: আপনি AngularJS $ HTTP পরিষেবা সহ একটি অন্য ডোমেনে POST অনুরোধটি প্রেরণ করতে চান। অ্যাঙ্গুলারজেএস এবং সার্ভার সেটআপ পাওয়ার সময় সচেতন থাকার জন্য বেশ কয়েকটি কৌতূহলমূলক বিষয় রয়েছে।
প্রথম: আপনার অ্যাপ্লিকেশন কনফিগারেশনে আপনাকে অবশ্যই ক্রস ডোমেন কলের অনুমতি দিতে হবে
/**
* Cors usage example.
* @author Georgi Naumov
* gonaumov@gmail.com for contacts and
* suggestions.
**/
app.config(function($httpProvider) {
//Enable cross domain calls
$httpProvider.defaults.useXDomain = true;
});
দ্বিতীয়: আপনাকে অবশ্যই শংসাপত্রগুলি নির্দিষ্ট করতে হবে: অনুরোধে সত্য এবং ব্যবহারকারীর নাম এবং পাসওয়ার্ড।
/**
* Cors usage example.
* @author Georgi Naumov
* gonaumov@gmail.com for contacts and
* suggestions.
**/
$http({
url: 'url of remote service',
method: "POST",
data: JSON.stringify(requestData),
withCredentials: true,
headers: {
'Authorization': 'Basic bashe64usename:password'
}
});
Irdহির্ড: সার্ভার সেটআপ। আপনাকে অবশ্যই সরবরাহ করতে হবে:
/**
* Cors usage example.
* @author Georgi Naumov
* gonaumov@gmail.com for contacts and
* suggestions.
**/
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://url.com:8080");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
প্রতিটি অনুরোধের জন্য। আপনি যখন বিকল্প পাবেন তখন আপনাকে অবশ্যই পাস করতে হবে:
/**
* Cors usage example.
* @author Georgi Naumov
* gonaumov@gmail.com for contacts and
* suggestions.
**/
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
header( "HTTP/1.1 200 OK" );
exit();
}
এইচটিটিপি প্রমাণীকরণ এবং সমস্ত কিছু তার পরে আসে।
এখানে পিএইচপি সহ সার্ভার সাইডের ব্যবহারের সম্পূর্ণ উদাহরণ।
<?php
/**
* Cors usage example.
* @author Georgi Naumov
* gonaumov@gmail.com for contacts and
* suggestions.
**/
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://url:8080");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
header( "HTTP/1.1 200 OK" );
exit();
}
$realm = 'Restricted area';
$password = 'somepassword';
$users = array('someusername' => $password);
if (isset($_SERVER['PHP_AUTH_USER']) == false || isset($_SERVER['PHP_AUTH_PW']) == false) {
header('WWW-Authenticate: Basic realm="My Realm"');
die('Not authorised');
}
if (isset($users[$_SERVER['PHP_AUTH_USER']]) && $users[$_SERVER['PHP_AUTH_USER']] == $password)
{
header( "HTTP/1.1 200 OK" );
echo 'You are logged in!' ;
exit();
}
?>
এই সমস্যাটি সম্পর্কে আমার ব্লগে একটি নিবন্ধ রয়েছে যা এখানে দেখা যায় ।