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跨域

利用 浏览器加载静态资源的时候不限制跨域

  1. 后端返回的这个字符串有讲究
    1. 名字是个函数名,前端定义好的函数名
    2. 函数后面加括号,并且括号中把要传递的数据放进去

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跨域

posted @ 2019-02-15 21:44  SuraSun  阅读(152)  评论(0)    收藏  举报