php - laravel 5.6 - 带有 Laravel API 的 vuejs SPA
问题描述
我正在使用laravel 5.6
. 我有一个场景,我需要创建另一个文件夹来vuejs
独立于laravel
. 所以现在我有:
laravel
将 api 提供get/post
给数据库:
- www.example.com/sample_api/{id}
- www.example.com/sample_api2/
...
并使用cors
中间件设置:
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
public function handle($request, Closure $next)
{
$allowedOrigins = ['http://myroute.xyz', 'http://clarkconcepts.net','http://localhost'];
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
if (in_array($origin, $allowedOrigins)) {
return $next($request)
->header('Access-Control-Allow-Origin', $origin)
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers',' Origin, Content-Type, Accept, Authorization, X-Request-With, cache-control,postman-token, token')
->header('Access-Control-Allow-Credentials',' true');
}
return $next($request);
}
}
我可以get
从laravel
api,但不是post
. 当我post
通过以下方式时,我总是得到这个api
:
从源“ http://localhost:8080 ”访问“ http://localhost:8000/posttest ”的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“访问控制” -Allow-Origin' 标头出现在请求的资源上。
这localhost:8000
是 laravel 服务器,localhost:8080
是vuejs
. 我怀疑这是因为我在 I 时错过了标题post
,但我不确定在这种情况下该怎么做。
更新1
按照@phil的建议,我添加localhost:8080
了$allowedOrigins
这样的内容:
$allowedOrigins = ['http://myroute.xyz', 'http://clarkconcepts.net','http://localhost','http://localhost:8080'];
做了一些谷歌,似乎是 CSRF 令牌问题。我现在很困惑,我想是因为我不能使用 CSRF Token,这就是为什么Cors
中间件的所有麻烦。
无论如何,有没有办法解决这个问题?或如何将 CSRF 令牌添加laravel
到vuejs
SPA 站点?
解决方案
推荐阅读
- java - Apache Camel whenExchangeReceived 和 whenAnyExchangeReceived - 访问 Exchange
- python - 从 PDF 转换为图像时无法读取图像数据
- visual-studio - 如何在 VisualStudio 2017 的 ASP.net 项目中使用 Bootstrap-Vue?
- c# - SQL 脚本的 C# Linq 等效项没有响应
- python - 在键入文本时使散景 TextInput 回调响应
- python - 全局 numpy 数组在函数内部发生更改,但没有对其进行全局引用
- pseudocode - 记录类型伪代码的问题,显示每行的最后一列
- c++ - 从构造函数中的 catch 块调用析构函数是否安全?
- javascript - 渲染在异步方法结束之前运行。如何从我的异步方法将道具传递给组件?
- java - 之间的区别?扩展与 E 扩展