2015-12-04 3 views
0

Я знаю, что это было задано, но я много пробовал и не мог выполнить эту работу.угловой запрос POST не работает, но GET работает нормально

Я делаю запрос GET и POST от моего углового приложения к laravel backend api's. Я могу получить json из запроса на получение, но мой запрос POST не подходит для типа данных json. Он работает для

x-www-form-urlencoded 

, но я не могу извлечь данные так, как в формате json.

$http.get('http://api.app.mywebsite.com/users').success(function(data){ 
    $scope.user = data; 
}); 

$scope.addUser = function(user){ 
    console.log($scope.user); 
    $http({ 
     method: 'POST', 
     url: 'http://api.app.mywebsite.com/users', 
     dataType: 'json', 
     data: $scope.user, 
     headers: {'Content-Type': 'application/json; charset=utf-8' } 
    }).then(function(result){ 
     console.log(result); 
    }, function(error){ 
     console.log(error); 
    }) 
} 

$scope.user is posted on form submit. 

Я получаю ошибку: -

XMLHttpRequest cannot load http://api.app.mywebsite.com/users. 
Response  to preflight request doesn't pass access control check: 
No 'Access-Control- Allow-Origin' header is present on the 
requested resource. Origin 'http://app.mybackend.com' is therefore not  allowed access. 

Мой CORS.php промежуточного слоя в Laravel: -

public function handle($request, Closure $next) 
{ 
    header("Access-Control-Allow-Origin: *"); 

    // ALLOW OPTIONS METHOD 
    $headers = [ 
     'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE', 
     'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin, X-Requested-With, Accept' 
    ]; 
    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); 
} 

routes.php

Route::group(['middleware' => 'cors'], function() 
{ 
    Route::resource('users', 'UserController'); 
}); 
+0

Что именно "не работает"? Вы получаете сообщение об ошибке? Пожалуйста, уточните, что вы ожидаете и что на самом деле происходит. –

+0

Появляется следующее сообщение об ошибке: «Ответ на запрос предварительной проверки не проходит проверку контроля доступа: на запрошенном ресурсе присутствует заголовок« Access-Control-Allow-Origin ».» Обновите мой вопрос. –

+0

Какие заголовки отправлены с предполетным положением в зависимости от браузера? –

ответ

0

Обновление: http://let-aurn.github.io/laravel-5-cors/

Вам необходимо настроить сервер HTTP, чтобы CORS Похожий вопрос: How to enable CORS in AngularJs

И: AngularJS performs an OPTIONS HTTP request for a cross-origin resource

+0

Хорошо, что мой сервер работает для запроса GET, что означает, что CORS работает, поэтому я предполагаю, что есть некоторые проблемы на стороне клиента. –

+0

Проверьте добавленный вопрос SO также. –

Смежные вопросы