2016-03-07 37 views
2

我是Laravel和Lumen框架的新手。我正在使用流明做我的第一個項目。我想創建一個API從角預檢反應無效(重定向)錯誤

這裏打電話是我代碼:

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; 
    }; 
}]); 

,這裏是我的流明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\[email protected]'); 

這裏是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); 
    } 
} 

但它顯示「XMLHttpRequest無法加載http://localhost/service/public/getdata/?place=sdfs。預檢響應無效在執行console.log(重定向)」的錯誤。

我用Google搜索了兩天,但不能找到一個解決方案。

請幫

回答

1

你可能得了由於無效的問題在您的要求/不正確頭。頭的唯一類型PlaceController似乎允許爲Content-Type,但你發送不止於此。

此外,Access-Control-Allow-OriginAccess-Control-Allow-Methods頭應添加到您的請求的服務器響應,不要求itsel F。

MDN,跨站點請求(這似乎是你的情況)必須滿足以下條件:

  • 只允許使用方法是:
    • GET
    • HEAD
    • POST
  • 除了由用戶代理自動設置的標題(例如,連接,用戶代理等),其允許被手動設置僅標頭是:
    • 接受
    • 接受語言
    • 內容語言
    • 內容類型
  • 唯一允許的值內容類型標頭爲:
    • application/x-www-form-urlencoded
    • 的multipart/form-data的
    • text/plain的

:我從未與Laravel或流明的工作,但對我來說,如果我不正確我最後設置的標頭與之相同的response for preflight is invalid (redirect)錯誤。

相關問題