博文

laravel跨域解决方案

我们在用 laravel 进行开发的时候,特别是前后端完全分离的时候,由于前端项目运行在自己机器的指定端口(也可能是其他人的机器) , 例如 localhost:8000 , 而 laravel 程序又运行在另一个端口,这样就跨域了,而由于浏览器的同源策略,跨域请求是非法的。其实这个问题很好解决,只需要添加一个中间件就可以了。 新建一个中间件php artisan make:middleware EnableCrossRequestMiddleware书写中间件内容<?phpnamespaceApp\Http\Middleware;useClosure;classEnableCrossRequestMiddleware{/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */publicfunctionhandle($request, Closure $next){$response=$next($request);$origin=$request->server('HTTP_ORIGIN')?$request->server('HTTP_ORIGIN'):'';$allow_origin=[ 'http://localhost:8000',];if

关于 jwt ,你应该知道的

什么是 jwt ? JWT 全称叫 JSON Web Token, 是一个非常轻巧的规范。这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。 jwt 使用场景jwt 用途广泛,例如授权、鉴权等。具体一点的话,假如我们有一个 A 用户想要邀请某用户进入自己的群组,此时 A 用户需要生成一条邀请链接,链接内容大致如下: https://host/group/{group_id}/invite/{invite_user} 此时这个链接点击进去虽然可以实现让用户加入群组,但是用户可以随意更改这个链接的参数,例如改改 group 后面的ID,从而加入其他任意群组,改改 invite 后面的邀请人等等操作。所以这种 URL 并不是安全的,那么这种情况下,我们就可以使用 jwt 来实创建一个安全的邀请链接了。 首先 URL 要简单改一下, https://host/group/invite/{token}
可以看到我们去掉了 groupId 和 inviteUser 参数,添加了一个 token 参数,可想而知, groupId 和 inviteUser 应该是被包含进 token 里面了,如何实现这个看似很神奇的 token 呢? 我们来看看 jwt 的原理吧。 jwt 的组成、原理及实现 在讲 jwt 原理之前得先知道 jwt 由哪些东西组成。 jwt 组成 一个 JWT 实际上就是一个字符串,它由三部分组成,头部、载荷与签名。 头部 (Header) JWT 需要一个头部,用于描述关于该 JWT 的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个 JSON 对象,如: