Day088--RESTful, 浏览器同源策略, JSONP跨域, CORS跨域, django-cor-headers
RESTful规范介绍
熟悉RESTful API(接口)开发
RESTful是个啥?
规范
表现层状态转化
将传统的软件开发架构与通信协议做融合
用HTTP协议中的 请求方法 来表示增删改查四个动作
GET: 获取资源
POST: 创建资源
PUT:更新资源
DELETE:删除资源
RESTful优势:
以图书的增删改查为例
/books/ GET:获取图书信息
/books/add/ POST:新增图书
/books/1/edit/ POST: 编辑图书
/books/1/del/ GET: 删除图书
/books/ GET:查看所有的图书
/books/ POST: 创建一本书
/books/1/ PUT:编辑图书
/books/1/ DELETE:删除图书
/books/1
id: 1
title: 《跟MJJ学前端》
publisher: '/publisher/1/'
RESTful设计的误区:
1. URI不要包含动词! (所有的资源都用名词)
RESTful设计指南
重点:常用状态码
浏览器的同源策略
限制了浏览器往不同的源发请求,阻止读取响应数据。


JSONP跨域
利用 浏览器加载静态资源的时候不限制跨域
- 后端返回的这个字符串有讲究
- 名字是个函数名,前端定义好的函数名
- 函数后面加括号,并且括号中把要传递的数据放进去
![]()
jQuery中支持JSONP

缺点:
前后端都要支持
只能发GET请求
CORS跨域
简单请求和非简单请求
同时满足以下两个条件的是简单请求:
简单请求:
后端要给响应头加上 Access-Control-Allow-Origin
非简单请求:
后端要给响应头加上:
如果修改了Content-Type: `Access-Control-Allow-Headers
如果使用的是PUT或DELETE请求 : Access-Control-Allow-Methods
使用Vue中的axios演示了 PUT和DELETE请求
<template>
<button @click="doPUT">发送PUT请求</button>
</template>
<script>
export default {
name: "LiteCourse",
methods: {
doPUT(){
// 用axios发送PUT请求到 http://127.0.0.1:8000/cors/
this.$axios.delete('http://127.0.0.1:8000/cors/')
.then((res)=>{console.log(res)})
.catch((error)=>{console.log(error)})
}
}
}
</script>
<style scoped>
</style>
django-core-headers
详见博客 同源策略及JSONP、CORS跨域


浙公网安备 33010602011771号