关于前后端分离使用 API,如何选择交互协议?

最近做一个前后端分离的项目,然后后端想用laravel-API,前端通过API获取数据,现在困惑在API和前端交互的一个协议,因为通过API交互导致无法使用SESSION,网上有很多的API的协议,比如JWT,OAUTH2.0等等,现在不知道如何选择?您是否能给一些建议?

版本:laravel 5.5

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

@singhania 了解下扩展包:laravel-cors,不仅仅是配置一条 Header 那么简单。

5年前 评论
讨论数量: 6
ibucoin

简单的用jwt,基本上就是token验权的问题,加https就可以了。

5年前 评论

我在看passport中间用的就是OAUTH2.0,但是很复杂有没有简单点的,因为我是自己的项目,放在同一个服务器上,只是为了前端人员和后端人员分离,有没有简单一点的认证? 属于内部API交互

5年前 评论

首先,JWT 和 OAuth 2.0 都不是 API 协议。

其次,前后端分离,不会影响 Session 机制的使用。

再次,laravel/passport 是一套 OAuth 2.0 解决方案,其将 Access Token 通过 JWT 的方式包装后响应给客户端。

所以,你的问题应当是:前后端分离 使用 HTTP API 交互 如何验权并保持用户登录态?

最后,既然是内网应用进行交互,可以考虑完全不使用验权机制,直接走内部 VPC 即可。

5年前 评论

@Wi1dcard 我现在遇到这样一个问题,本地环境配置了2个域名:api.mytest.com 和 admin.mytest.com。
admin.mytest.com 是纯静态页面,向api.mytest.com获取数据,中间会出现跨域问题,网上搜索案例是在apache 配置增加了Header set Access-Control-Allow-Origin *。增加后GET可以获取到数据,但是POST无法数据,游览器提示
Access to XMLHttpRequest at 'http://api.mytest.com/api/v1/passport/logi...=' from origin 'http://admin.mytest.com' has been blocked by CORS policy: Request header field api_token is not allowed by Access-Control-Allow-Headers in preflight response. 该如何解决?

5年前 评论

@singhania 了解下扩展包:laravel-cors,不仅仅是配置一条 Header 那么简单。

5年前 评论

@Wi1dcard 好的,非常感谢!

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!