前端和接口跨域访问

1 业务场景

  • 当前产品开发,前端和后端完全分离,在调试阶段,静态服务器和接口服务器的端口是不同,前后端通信时,这里就需要跨域处理, 这点完全可以再后端进行处理。

  • 当用户第一次调用接口时,后端对其设置了相应的 cookie,在第二次调用时,我们要求前端调用接口时,会发送第一次调用时设置的 cookie。默认情况下,标准的跨域请求是不会发送 cookie 等用户认证凭据的,XMLHttpRequest 2 的一个重要改进就是提供了对授信请求访问的支持。

2 解决方案

2.1 跨域问题

因为还是使用了 django 框架,所以采用了 django-cors-header 做请求域审核,具体用法请查看 https://github.com/ottoyiu/django-cors-headers

很感谢这个工具,快速解决了跨域问题

2.2 跨域请求发送 cookie

默认情况下 widthCredentialsfalse,我们需要设置 widthCredentialstrue

如果使用的是 jquery, 调用方法如下

$.ajax({
   url: a_cross_domain_url,
   xhrFields: {
      withCredentials: true
   }
});

3 举例:

后端业务:比如获取列表接口(使用的是 django-rest-framework)


def list(self, request, *args, **kwargs):
    instance = super(ManufacturerView, self).list(request, *args, **kwargs)
    instance.set_cookie('uuid', 'fkajdflksduiwerw')
    return instance
        

第一次调用

图片描述

第二次调用
图片描述

这里鄙人取了巧,直接忽略 referer 即可,接下会修改

4 小结

这样就简单的解决了前端和后端完全隔离通信的问题,根据业务的需要,设计满足自己业务的需求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值