【发布时间】:2016-07-26 16:18:11
【问题描述】:
我有使用 lumen 开发的 API。我可以使用邮递员获取请求。但是当使用 Jquery.ajax 请求时它不起作用。所以我需要知道如何在 lumen API 中启用 CORS。
【问题讨论】:
我有使用 lumen 开发的 API。我可以使用邮递员获取请求。但是当使用 Jquery.ajax 请求时它不起作用。所以我需要知道如何在 lumen API 中启用 CORS。
【问题讨论】:
考虑使用以下代码创建一个CorsMiddleware.php 文件。查找详情here.
<?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)
{
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Max-Age' => '86400',
'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With'
];
if ($request->isMethod('OPTIONS'))
{
return response()->json('{"method":"OPTIONS"}', 200, $headers);
}
$response = $next($request);
foreach($headers as $key => $value)
{
$response->header($key, $value);
}
return $response;
}
}
将其保存在中间件文件夹中后,通过将其添加到您的 bootstap/app.php 文件中启用它,就像这样在中间件列表中
$app->middleware([
...
App\Http\Middleware\CorsMiddleware::class // Add this
]);
希望对你有帮助。
【讨论】:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8000/api//stocks/company/info?company=. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing)添加后仍然显示错误
我建议使用 Barry vd 的 CORS 包。赫维尔: https://github.com/barryvdh/laravel-cors#lumen
它具有可配置性并支持 ajax 的飞行前请求处理。
【讨论】: