码迷,mamicode.com
首页 > 其他好文 > 详细

聊一聊跨域,Vue向Django请求数据的一些问题

时间:2018-10-14 17:48:17      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:继承   django   允许   信息   get   header   前端   获取   看到了   

1.做前后端分离

 

前端使用Vue程序,后端使用Django配合rest-framework。

那么前端Vue通过API接口拿到数据会出现跨域的问题,JSONP只是在get中会用到的,所以这里使用cors来解决一下。

一个Vue程序通过ajax或者axios发送一个请求过来,这里需要做一个允许跨域请求资源的处理。

这里写一个中间件一劳永逸。

from django.middleware.common import CommonMiddleware
#拿到这个中间件,这个中间件继承
MiddlewareMixin
class CORSMiddleware(CommonMiddleware): 
  def process_response(self,request,response):

    #添加响应头 #允许什么域名来获取我的数据
    response["Access-Control-Allow-Origin"]="*"

    #允许你携带Content-Type这个请求头
    response["Access-Control-Allow-Headers"]="Content-Type"

    #允许你发送delete请求,Put请求
    response[Access-Control-Allow-Methods] = "DELETE,PUT"

    return response

也可以直接把middlewareMixin拿过来。

class MiddlewareMixin(object):
    def __init__(self, get_response=None):
        self.get_response = get_response
        super(MiddlewareMixin, self).__init__()

    def __call__(self, request):
        response = None
        if hasattr(self, process_request):
            response = self.process_request(request)
        if not response:
            response = self.get_response(request)
        if hasattr(self, process_response):
            response = self.process_response(request, response)
        return response

class CORSMiddleware(MiddlewareMixin):

    def process_response(self,request,response):
        # 添加响应头

        # 允许你的域名来获取我的数据
        response[Access-Control-Allow-Origin] = "*"

        # 允许你携带Content-Type请求头
        response[Access-Control-Allow-Headers] = "Content-Type"

        # 允许你发送DELETE,PUT
        response[Access-Control-Allow-Methods] = "DELETE,PUT"

        return response

这里对在中间件就对响应信息做一个cors跨域请求。

对了记得在settings.py中加上这个中间件。

技术分享图片

 这个中间件的原理就是浏览器看到了这个请求头,做了处理

技术分享图片

就算你在这加一个xxx=888的话,技术分享图片

别人通过跨域在这里也会看到这个信息。

 cors的本质就是设置响应头

聊一聊跨域,Vue向Django请求数据的一些问题

标签:继承   django   允许   信息   get   header   前端   获取   看到了   

原文地址:https://www.cnblogs.com/geogre123/p/9786942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!