【问题标题】:Error - Cross Origin request error错误 - 跨域请求错误
【发布时间】:2018-01-03 11:00:44
【问题描述】:

我正在使用 laravel 框架在 php 中开发一个 api,它返回离子应用程序的记录。所以问题是我发送图像和文件路径,当尝试使用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>

我该如何解决这个问题?

谢谢

【问题讨论】:

标签: php laravel .htaccess ionic2 cross-domain


【解决方案1】:

通过打开终端或windows cmd命令在laravel中新建middleware

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

并使用此Middleware 在对您的应用程序的每个请求期间运行

Http目录中打开Kernel.php并注册你的Middleware

protected $middleware = [

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

]

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2014-06-25
    • 2015-06-08
    • 2021-03-05
    • 2016-03-01
    • 2012-09-08
    相关资源
    最近更新 更多