前后端分离开发 Web 、API、CORS

资料查阅:
1, jquery使用CORS跨域请求时,为什么cookie丢失了。
2, 前后端分离了是不是服务器就不能设置Cookie了?
3, 前后端分离 不用session怎么才能实现身份验证?

4,前后端分离的项目,如何解决登录问题

5, XMLHttpRequest.withCredentials
6, 跨域请求设置withCredentials
7, XMLHttpRequest
8, 浏览器跨域方法与基于Fetch的Web请求最佳实践
9, 发送跨域请求返回405错误问题
10, cors跨域之简单请求与预检请求(发送请求头带令牌token)
11, 关于跨域的ajax
12, 设置header,实现跨域访问
13, 记一次header跨域与cookie共享

目前借鉴的方法:前端把account和password,提交到服务端的登录api,服务端验证正确后,生成一个token,并把token和userId,存在缓存里(推荐redis数据库),然后把token返回给前端。前端每次的请求头中带token,这样就是简单的token 机制

作者:文杰
链接:https://www.zhihu.com/question/36724306/answer/119983931
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考以上这么多,实际遇到的问题即是与 记一次header跨域与cookie共享 相同。

跨域请求API前提:

  1. Web服务器端:如果要用ajax传cookie必须设置下面代码,否则web服务器无法传递cookie给api服务器。

    $.ajaxSetup(
    { crossDomain: true, 
        xhrFields: { 
            withCredentials: true 
            } 
    });
  2. API服务器端Response.Headers必须设置 Access-Control-Allow-Origin,允许源为(Origin)Web服务器的请求。如此服务器才能接收web服务器发送过来的cookie。

    Access-Control-Allow-Origin http://web.abc.com;// web服务器网址。即是请求是的Origin。
  3. 以上第1步实现web主机发送cookie 到 api主机,第2步实现API主机接收web主机。之后api主机要回传cookie给web主机,API值必须设置:

    Access-Control-Allow-Credentials true

    4,API主机可以设置CookieDomain,指定只接受哪个域名的主机。如下设置,如此Web主机:web.abc.com,API主机:api.abc.com 之间就可以互通cookie了。
    CookieDomain默认是web主机的域名,如果web主机和API主机域名不相同,就不能互传cookie了,要想其他办法。

    <add key="CookieDomain" value="abc.com" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值