【发布时间】:2023-03-28 23:50:01
【问题描述】:
我在我的应用程序中使用 Laravel 5 并设置我使用的 CORS 中间件的内容类型,看起来像这样。
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Credentials', 'true')
->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE')
->header('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With')
->header('Content-Type', 'application/json');
}
这是 CORS 类中的函数。
但是,当我返回 Blade 视图(例如 auth/login)时,我会在浏览器中获得纯 HTML 代码,而不是获得 HTML 的实际视图。
当我将“Content-Type”更改为 text/html 时,视图可以正常工作,但返回并接受 json 的 api 不起作用。
我哪里错了?
【问题讨论】:
-
->header('Content-Type', 'application/json');。这是你的错误。该行告诉您的浏览器将内容显示为实际的 JSON 而不是 HTML 内容。去掉这行,就OK了
-
但是,我还需要 api 的 application/json。
-
你必须制作另一个中间件,并在一个包含所有 API 路由的组中使用它;
标签: php laravel cors laravel-5 blade