首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误-跨域请求错误

错误-跨域请求错误
EN

Stack Overflow用户
提问于 2017-07-27 23:45:52
回答 1查看 375关注 0票数 1

我正在用php开发一个使用laravel框架的api,它可以为ionic应用程序返回记录。所以问题是,我发送图像和文件路径,而应用程序在尝试使用cross origin error下载文件时出现错误。

该方法发送如下所示的json:

代码语言:javascript
复制
[{
"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"
}]

我还有另一个方法(Path)来获取文件:

代码语言:javascript
复制
public function getFile($url){
$file= public_path(). $url;

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

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

如果确实在浏览器上使用它,它会将文件下载到我的笔记本电脑上,但当我试图将文件下载到应用程序中时,它会给我cross origin error

在搜索了这个之后,我更新了我的.htaccess,添加了以下几行:

代码语言:javascript
复制
<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>

我该如何解决这个问题?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-07-28 04:29:20

通过open middleware或windows cmd命令在laravel中创建新终端

php artisan make:middleware CorsMiddleware

或者任何你想使用的名字

并将此代码

代码语言:javascript
复制
<?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

代码语言:javascript
复制
protected $middleware = [

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

]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45355458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档