2017-07-27 54 views
1

我正在開發一個php的lapivel框架,返回離子應用程序的記錄。所以問題是我發送圖像和文件的路徑和應用程序提供了一個錯誤,當試圖下載與cross origin error文件。錯誤 - 跨源請求錯誤

的方法發送這樣的JSON:

[{ 
"name": "Braga", 
"ref": "6903", 
"cover": "/images/uploads/0_C6903_597614930f57e.jpg", 
"coverDetail": "/images/uploads/0_D6903_597614930f599.jpg", 
"pdf": "/images/uploads/0_P6903_597614930f5b0.epub", 
"companyId": "0" 
}] 

我有另一種方法(路徑)來獲取文件:

public function getFile($url){ 
$file= public_path(). $url; 

$headers = array(
    'Content-Type: application/epub', 
); 

return Response::download($file, '', $headers);} 

如果沒有使用該瀏覽器的工作原理,它下載文件到我的筆記本電腦,但當我嘗試將文件傳送到應用程序時,它會給我cross origin error

搜索關於此之後更新我的.htaccess添加此行:

<IfModule mod_headers.c> 
     Header always set Access-Control-Allow-Origin "*" 
     Header always set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Access-Control-Allow-Origin" 
     Header always set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 
</IfModule> 

我怎樣才能解決這個問題?

謝謝

+0

看看這個 https://stackoverflow.com/questions/33076705/laravel -5-1-api-enable-cors –

+0

應該使用該https://github.com/barryvdh/laravel-cors?@AliTurki – user3242861

回答

1

通過開放終端或窗口創建laravel新middleware在cmd命令

php artisan make:middleware CorsMiddleware

或者任何名稱你想使用

,並把這個代碼

<?php 

namespace App\Http\Middleware; 

use Closure; 

class CorsMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 

     $domains = ["http://example.com"]; 

     if(isset($request->server()['HTTP_ORIGIN'])){ 
      $origin = $request->server()['HTTP_ORIGIN']; 

      if(in_array($origin,$domains)){ 
      header("Access-Control-Allow-Origin: " . $origin); 
      header("Access-Control-Allow-Headers: Origin,Content-type,Authorization"); 
      } 

     } 

     return $next($request); 
    } 
} 

A次使用此MiddlewareHttp目錄中的每個請求過程中運行你的應用程序

打開Kernel.php並註冊Middleware

protected $middleware = [ 

    \App\Http\Middleware\CorsMiddleware::class, 

]