错误 - 跨域请求错误
Posted
技术标签:
【中文标题】错误 - 跨域请求错误【英文标题】: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>
我该如何解决这个问题?
谢谢
【问题讨论】:
看看这个***.com/questions/33076705/… 应该使用 github.com/barryvdh/laravel-cors ?@AliTurki 【参考方案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,
]
【讨论】:
以上是关于错误 - 跨域请求错误的主要内容,如果未能解决你的问题,请参考以下文章
为啥一些跨域 XMLHttpRequest 请求不返回 CORS 错误
jquery .getJSON 跨域请求 报 Url错误 。callback=?用与跨域的参数,急啊 高手帮忙解决一下。