前端和接口跨域访问

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 小结

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


黑月亮
点滴记录,步步成长

现实与完美之间

1.6k 声望
24 粉丝
0 条评论
推荐阅读
centos | 修改静态 IP
设置 Centos 为使用静态 IP1 修改网络配置 {代码...} 修改后的内容如下 {代码...} 2 重启网络服务 {代码...} 3 查看地址 {代码...} 参考来源:[链接]

青阳半雪阅读 1.8k评论 3

Mysql到TiDB迁移,双写数据库兜底方案
TiDB 作为开源 NewSQL 数据库的典型代表之一,同样支持 SQL,支持事务 ACID 特性。在通讯协议上,TiDB 选择与 MySQL 完全兼容,并尽可能兼容 MySQL 的语法。因此,基于 MySQL 数据库开发的系统,大多数可以平滑迁...

京东云开发者阅读 1k

封面图
三、djanjo
Django 提示:本文根据b站黑马python课整理链接指引 => 黑马程序员python企业级开发项目-手把手从0到1开发《美多商城》视图介绍和项目准备视图介绍视图就是应用中views.py文件中的函数视图的第一个参数必须为H...

玲小叮当阅读 920

一、Django
Django 提示:本文根据b站黑马python课整理链接指引 => 黑马程序员python企业级开发项目-手把手从0到1开发《美多商城》一、Django介绍1.1 MVT模式M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数...

玲小叮当阅读 805

Django笔记二十二之多数据库操作
在第十篇笔记的时候,简单介绍过 using() 的使用方法,多个数据库就是通过 using(db_alias) 的方式来来指定选中的数据库,这里介绍一下同步库表结构时候的操作。

Hunter阅读 795

封面图
Django笔记十三之select_for_update等选择和更新等相关操作
本篇笔记将介绍 update 和 create 的一些其他用法,目录如下:get_or_createupdate_or_createselect_for_updatebulk_createbulk_update1、get_or_create前面我们介绍过 get() 和 create() 的用法,那么 get_or_cr...

Hunter阅读 738

封面图
Django笔记十二之defer、only指定返回字段
defer 的英语单词的意思是 延迟、推迟,我们可以通过将字段作为参数传入,可以达到在获取数据的时候指定不获取该字段数据,常用于一些 textfield 字段上。

Hunter阅读 701

封面图

现实与完美之间

1.6k 声望
24 粉丝
宣传栏