لدي تطبيق Angular يعمل بالتوازي مع Laravel من جهة الخادم، ولكن كل منهما على خادم ويب منفصل وخادم الويب الذي يحوي Angular يقوم بتزويد الواجهات الرسومية إلى تطبيقات Cordova. ولكن أواجه مشكلة CORS عند طلب البيانات من الخادم، حتى مع محاولتي لمعالجتها بقي الخطأ كما هو.
وعند طلب البيانات أحصل على الخطأ التالي في console:
No 'Access-Control-Allow-Origin' header is present on the requested resource
ولكن عند تجربتي للطلب GET التالي يعمل ولا يظهر أي خطأ:
السؤال
Amir Alsaeed
لدي تطبيق Angular يعمل بالتوازي مع Laravel من جهة الخادم، ولكن كل منهما على خادم ويب منفصل وخادم الويب الذي يحوي Angular يقوم بتزويد الواجهات الرسومية إلى تطبيقات Cordova. ولكن أواجه مشكلة CORS عند طلب البيانات من الخادم، حتى مع محاولتي لمعالجتها بقي الخطأ كما هو.
وعند طلب البيانات أحصل على الخطأ التالي في console:
No 'Access-Control-Allow-Origin' header is present on the requested resource
ولكن عند تجربتي للطلب GET التالي يعمل ولا يظهر أي خطأ:
Route::get('example', ['middleware' => 'cors', function(){ return Response::json(array('name' => 'Steve Jobs 1', 'company' => 'Apple')); }]);
ولكن المسارات التالية التي تحتاج التحقق token-based هي التي تظهر الخطأ فقط:
Route::group(['middleware' => 'cors'], function () { Route::group(['prefix' => 'api'], function() { Route::resources('authenticate', 'AuthenticateController', ['only' => ['index']]); Route::post('authenticate', 'AuthenticateController@authenticate'); }); });
وهذه هي إعدادات ال cors الخاصة بالتطبيق:
class CORS { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { header("Access-Control-Allow-Origin: *"); $headers = [ 'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE', 'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin' ]; if($request->getMethod() == "OPTIONS") { // The client-side application can set only headers allowed in Access-Control-Allow-Headers return Response::make('OK', 200, $headers); } $response = $next($request); foreach($headers as $key => $value) $response->header($key, $value); return $response; return $next($request); } }
فكيف يمكنني حل هذه المشكلة مع استخدام tokens مع خادم الويب الذي بضمنه Angular؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.