DRF项目之解决浏览器同源策略问题
DRF项目,是一个前后端分离的Web框架。
本项目中,我们前端采用的是VUE框架。
前后端分离的情况就会出现一个问题,前端的Ajax请求无法请求到后端API(接口)。
那么,为什么会出现这种问题呢?
因为,浏览器的同源策略不允许,不同源的脚本(网站代码Ajax)在没有经过明确授权的情况下,去读写对方的资源。
既然提到了同源策略,我们就避免不了的需要了解一下子什么叫做源,什么又叫做同源、同源策略。
源:指的是在url中的协议、域名、端口号;
同源:当两个url的协议、域名、端口号都一致,那么,我们就称这两个url是同源的。
同源策略:指的是浏览器的一个安全功能,其作用就是让防止两个非同源的url进行通信。
既然,我们明确了问题的所在,那么,我们就要开始解决问题了。
这里,我们就需要使用到跨域来实现非同源之间url进行通信。
我们采用跨域的方式是跨域资源共享CORS(Cross-origin resource sharing)。
既然,我们知道了解决问题的方式,那么,我们就要将用代码来实现了。
首先,我们需要安装第三方模块,配合Django程序进行CORS的配置。
pip install django-cors-headers
然后,我们需要在项目的配置文件中,进行配置。
INSTALLED_APPS = [
... # 注册CORS跨域访问子应用
'corsheaders', ]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
...
]
这里,还需要配置请求的白名单。
# CORS
CORS_ORIGIN_WHITELIST = (
'http://127.0.0.1:8080',
'http://localhost:8080',
'http://www.meiduo.site:8080',
'http://www.meiduo.site:8000'
)
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
当我们,完成了以上操作后,就解决掉了浏览器的同源策略问题啦。
DRF项目之解决浏览器同源策略问题的更多相关文章
- 浏览器同源策略及Cookie的作用域
from:https://blog.csdn.net/wang379275614/article/details/53333054 如题,本文主要介绍两方面内容:首先简单介绍浏览器的同源策略与其带来的 ...
- jsonp突破浏览器同源策略
jsonp突破浏览器同源策略 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- [js]浏览器同源策略(same-origin policy)
浏览器的同源策略 浏览器同源政策及其规避方法 什么是同源策略 A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源".所谓"同源"指的是" ...
- django csrf_protect及浏览器同源策略
1.django在检测post行为时会有诸多的限制. 为了防止跨域请求伪造安全 参考:http://www.qttc.net/201209211.html https://www.cnblogs. ...
- 浏览器同源策略,跨域请求jsonp
浏览器的同源策略 浏览器安全的基石是"同源政策"(same-origin policy) 含义: 1995年,同源政策由 Netscape 公司引入浏览器.目前,所有浏览器都实行这 ...
- 浏览器同源策略与ajax跨域方法汇总
原文 什么是同源策略 如果你进行过前端开发,肯定或多或少会听说过.接触过所谓的同源策略.那么什么是同源策略呢? 要了解同源策略,首先得理解“源”.在这个语境下,源(origin)其实就是指的URL.所 ...
- [oldboy-django][2深入django]浏览器同源策略 + JSONP + cros
浏览器的同源策略: - 同源: 同方法,同域名,同端口 http://www.baidu.com:8000 http: 方法 www.baidu.com: 域名 8000: 端口 - 定义 网上解析非 ...
- 踩坑录- Spring Boot - CORS 跨域 - 浏览器同源策略
1.解决办法,创建一个过滤器,处理所有response响应头 import java.io.IOException; import javax.servlet.Filter; import javax ...
- 【Python-Django】浏览器同源策略
1995年,同源政策由 Netscape 公司引入浏览器.目前,所有浏览器都实行这个政策. 同源策略是浏览器的一个安全功能,不同源的客户端脚本(js文件)在没有明确授权的情况下,不能读写对方资源.只有 ...
随机推荐
- 使用BP拦截POST型请求包
1.安装phpstudy并下载wordpress 文件,安装在phpstudy的www目录下 phpstudy下载地址:https://www.xp.cn/download.html wordpres ...
- spring-页面模板配置
一个可用的freemaker配置: ... @Bean public ViewResolver viewResolver() { FreeMarkerViewResolver fr = new Fre ...
- [Codeforces]1263E Editor
The development of a text editor is a hard problem. You need to implement an extra module for bracke ...
- 从零开始学C++(2 字符串、向量和数组)
可以说string和vector是C++标准库中最重要的两种类型,string支持可变长字符串,而vector表示可变长的集合. string 头文件:<string> 定义在命名空间 s ...
- 015.Delphi插件之QPlugins,FMX插件窗口
内嵌FMX的插件窗口,效果还是很可以的.退出时,会报错,很诡异啊. 主窗口代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messa ...
- 007-PHP变量和函数相互转换
<?php function write($text) //定义function write()函数 { print($text); //打印字符串 } function writeBold($ ...
- ListView的DrawSubItem时间添加边框,字体变粗问题
procedure TFrmrdp.ListView1AdvancedCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubIt ...
- Spring配置数据源以及hibernate
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 【LeetCode】重新安排行程
[问题]给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序.所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所 ...
- R函数
1. sd() 求一组数据的标准差 > x = rep(1,15) > x [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 > sd(x) [1] 0 2.var ...