1 跨域问题(多个域之间的数据访问)

#同源策略(ip port 协议全部相同)
#本站的只能请求本站域名的数据
#CORS实现(跨域资源共享)
#实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。
#CORS基本流程

#1_CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)

#2_满足一下为简单请求
(1) 请求方法是以下三种方法之一:
HEAD
GET
POST
(2)HTTP的头信息不超出以下几种字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain #3_简单请求和非简单请求的区别? 简单请求:一次请求
非简单请求:两次请求,在发送数据之前会先发一次请求用于做“预检”,只有“预检”通过后才再发送一次请求用于数据传输。
* 关于“预检” - 预检请求方式:OPTIONS
- “预检”其实做检查,检查如果通过则允许传输数据,检查不通过则不再发送真正想要发送的消息
- 如何“预检”
=> 如果复杂请求是PUT等请求,则服务端需要设置允许某请求,否则“预检”不通过
Access-Control-Request-Method
=> 如果复杂请求设置了请求头,则服务端需要设置允许某请求头,否则“预检”不通过
Access-Control-Request-Headers
from django.utils.deprecation import MiddlewareMixin
#view局部
def test(request):
ret=HttpResponse('ok')
#允许http://127.0.0.1:8001域向我发请求
ret['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8000'
if request.method == 'OPTIONS':
# 所有的头信息都允许
ret['Access-Control-Allow-Headers'] = '*'
return ret
#设置中间件(全局)
class xxx(MiddlewareMixin):
def process_response (self, request, response):
# 简单请求:
# 允许http://127.0.0.1:8001域向我发请求
# ret['Access-Control-Allow-Origin']='http://127.0.0.1:8001'
# 允许所有域向我发请求
response['Access-Control-Allow-Origin'] = '*'
if request.method == 'OPTIONS':
# 所有的头信息都允许
response['Access-Control-Allow-Headers'] = '*'
return response

django中的cors(view设置以及中间件设置)

注意点1:有个csrf跨域防伪(允许别的域访问的  域 要把csrf中间件注掉 | 视图全部继承apiview,as_view 返回了 csrf_exempt(view) )

    ret['Access-Control-Request-Header']='contenttype,token'

2 vue中的(axios跨域请求数据)

vue中的ajax:
axios
安装:npm install axios
使用:
-先在main.js中配置:
import axios from 'axios'
Vue.prototype.$http=axios
-在组件中:
methods: {
btton_click: function () {
//取到对象
let cc = this
cc.$http.request({
//向其它域请求数据
url: 'http://127.0.0.1:8000/test/',
method: 'post',
            data:{
            //携带数据
}
}).then(function (response) {
//拿到原数据对象,更新
cc.course = response.data
}).catch(function (response) {
//请求失败
})
}
}

随机推荐

  1. shop++之language

    shop++商城改造此次感悟最深的就是封装.有些东西要整明白就得花点时间. 代码中经常用到这种,我照葫芦画瓢竟然没有用. 天啦,竟然是自己没有定义,还以为是什么高级自动的玩意呢? 文件结构如下: 后面 ...

  2. js中html拼接

    https://i.cnblogs.com/EditPosts.aspx?postid=10620765&update=1

  3. ava.io.InputStream & java.io.FileInputStream

    java.io.InputStream & java.io.FileInputStream java.io.InputStream,这个抽象类是表示字节输入流的超类,这个抽象类的共性的方法有: ...

  4. Unicode与UTF8

    举一个例子:It's 知乎日报 你看到的unicode字符集是这样的编码表: I 0049 t 0074 ' 0027 s 0073 0020 知 77e5 乎 4e4e 日 65e5 报 62a5 ...

  5. HTTP 响应类型 ContentType 对照表

    Ø  前言 1.   下面是 HTTP 响应类型 ContentType 的可选值,有备无患先保存一下.摘自:https://wiki.selfhtml.org/wiki/MIME-Type/%C3% ...

  6. java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap-----commons-ctions版本问题

    今天用到了一系列的第三方jar包,一环扣一环, 记住一个: 倘若你所导入的第三方jar包中的类一直显示未找到,那就是你的路径出问题了, /WEB-INF/lib目录下才是放第三方jar包位置, 但是今 ...

  7. Filter 起航 编程式配置 压缩响应 日志过滤器

    [编程式配置]可以用web.xml配置替换 @WebListenerpublic class FilterListenerConfigurator implements ServletContextL ...

  8. 【bzoj 1901】Zju2112 Dynamic Rankings

    Description 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是 ...

  9. 【noip 2011】提高组Day1T3.Mayan游戏

    Description Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是 ...

  10. Ubuntu安装MongoDB

    一.下载安装 首先,更新软件包列表以获取最新版本的存储库列表: sudo apt update 2.接着安装MongoDB包本身: sudo apt install -y mongodb ×加-y是为 ...