मैंने कोणीय & Yii2 REST सेवा विकसित की है। क्रॉस डोमेन में समस्या है। नीचे मेरे कोणीय & Yii2 REST कोड जोड़ें।Yii2 REST + कोणीय क्रॉस डोमेन CORS
AngularJS: (जैसे 'http://organization1.example.com', 'http://organization2.example.com', ....)
$http.defaults.useXDomain = true;
$http.defaults.withCredentials = true;
$http.defaults.headers.common['Authorization'] = 'Bearer ' + MYTOKEN
मेरे कोणीय नियंत्रक से अनुरोध:
apiURL = 'http://api.example.com';
$http.get(apiURL + '/roles')
.success(function (roles) { })
.error(function() { });
Yii2 .htaccess: (बाकी की तरह यूआरएल ' http://api.example.com ')
Header always set Access-Control-Allow-Origin: "*"
Header always set Access-Control-Allow-Credentials: true
Header always set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "Authorization,X-Requested-With, content-type"
Yii2 मेरे व्यवहार:
public function behaviors() {
$behaviors = parent::behaviors();
$behaviors['corsFilter'] = [
'class' => Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Expose-Headers' => [
'X-Pagination-Per-Page',
'X-Pagination-Total-Count',
'X-Pagination-Current-Page',
'X-Pagination-Page-Count',
],
],
];
$behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
'except' => ['options'],
];
$behaviors['contentNegotiator'] = [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
];
return $behaviors;
}
समस्या
मेरी कोणीय अनुरोध से 'प्राप्त' तरीका है, लेकिन यह होगा चला जाता है 'विकल्प' विधि 401 अनधिकृत त्रुटि (CORS) लौट &। क्योंकि अनुरोध प्राधिकरण शीर्षलेख नहीं भेजा गया है।
यह अब स्पष्ट रूप से यहाँ प्रलेखित है: http://www.yiiframework.com/doc-2.0/guide-rest-controllers।एचटीएमएल # कोर - बस इस गाइड का पालन करें और यह काम करेगा। सारांश: सुनिश्चित करें कि प्रमाणीकरण सीओआरएस व्यवहार के बाद आता है और हर समय प्रमाणीकरण से विकल्प बहिष्कृत करता है। – jlapoutre
अपडेट किया गया। धन्यवाद @ jlapoutre –