response for preflight is invalid (redirect) error
You might be having problems due to invalid/incorrect Headers in your request. The only type of header that PlaceController
seems to allow is Content-Type
, but you're sending more than that.
Also, Access-Control-Allow-Origin
and Access-Control-Allow-Methods
headers should be added to the server response for your request, not to the request itself.
From MDN, cross-site requests (which seems to be your case) have to meet the following conditions:
- The only allowed methods are:
- GET
- HEAD
- POST
- Apart from the headers set automatically by the user agent (e.g. Connection, User-Agent, etc.), the only headers which are allowed to be manually set are:
- Accept
- Accept-Language
- Content-Language
- Content-Type
- The only allowed values for the Content-Type header are:
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
Note: I never worked with Laravel or Lumen, but in my case if I don't set the headers correctly I end up with the same response for preflight is invalid (redirect)
error.
Abdulla
Updated on June 04, 2022Comments
-
Abdulla about 2 years
I am new to Laravel and Lumen framework. I am doing my first project using Lumen. I am trying to create an API calling from angular
Here is my angular code :
app.controller('ListCtrl', ['$scope', '$http', '$location', '$window', function($scope, $http, $location, $window) { $scope.data = {}; $scope.getdata = function() { $scope.datas = []; $headers = { 'Access-Control-Allow-Origin' : '*', 'Access-Control-Allow-Methods' : 'POST, GET, OPTIONS, PUT', 'Content-Type': 'application/json', 'Accept': 'application/json' }; $http({ url: "http://localhost/service/public/getdata/", method: "GET", params: {'place':$scope.data.place,'pincode':$scope.data.pincode}, headers: $headers }) .success(function(data,status,headers,config) { $scope.datas=JSON.stringify(data); console.log($scope.datas); $scope.navig('/show.html'); }) .error(function(){ alert("failed"); }); }; $scope.navig = function(url) { $window.location.href = url; }; }]);
And here is my Lumen route.php :
<?php header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers: Content-Type"); $app->get('/', function () use ($app) { return $app->version(); }); $app->get('getdata','App\Http\Controllers\PlaceController@index');
And here is PlaceController.php
<?php namespace App\Http\Controllers; use App\Places; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class PlaceController extends Controller { public function __construct() { header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers: Content-Type"); //header("Access-Control-Allow-Origin: http://localhost:8100"); } public function index() { $places = Place::all(); return response()->json($places); } }
But it shows "XMLHttpRequest cannot load http://localhost/service/public/getdata/?place=sdfs. Response for preflight is invalid (redirect)" error in console.log.
I have googled for two days,but cant find a solution.
Please help