00,跨域的问题

pontoon pontoon     2023-02-18     481

关键词:

 

什么是跨域?
浏览器的同源策略限制默认情况下前端页面和后端服务在不同服务器(域名、端口不一样)时,前端页面js无法请求到后端接口服务,即存在跨域问题。
DRF是怎么解决跨域问题?
  • 使用Jsonp方式解决
  • 使用cors解决
  • 使用nginx代理解决
使用Jsonp解决跨域的思路?
由于浏览器中的<script>的src请求、<img>的src请求
使用DRF的cors解决
写restfull响应的接口要额外的加一个相应头。
技术分享图片
response中只是响应了很多的数据,还需要增加响应头。
在哪加,在中间件里加
技术分享图片
<wiz_code_mirror>
 
 
 
x
 
 
 
 
 
1
class MiddlewareMixin:
2
    def __init__(self, get_response=None):
3
        self.get_response = get_response
4
        super().__init__()
5

6
    def __call__(self, request):
7
        response = None
8
        if hasattr(self, ‘process_request‘):
9
            response = self.process_request(request)
10
        if not response:
11
            response = self.get_response(request)
12
        if hasattr(self, ‘process_response‘):
13
            response = self.process_response(request, response)
14
        return response
15

16

17
class CORSMiddleware(MiddlewareMixin):
18
    def process_response(self, request, response):
19
        # 添加响应头
20
        # 允许你的域名来获取我的数据
21
        response[‘Access-Control-Allow-Origin‘] = "*"
22

23
        # 允许携带Content-Type请求头
24
        # response[‘Access-Control-Allow-Headers‘] = ‘Content-Type‘    Content-Type = url-encodeing
25

26
        # 允许发送DELETE,PUT(复杂请求)
27
        # response[‘Access-Control-Allow-Methods‘] = "DELETE, PUT"
28

29
        return response
 
 
再到settings.py中注册一下
<wiz_code_mirror>
 
 
 
 
 
 
 
 
 
1
MIDDLEWARE = [
2
    ...
3
    ‘app01.cors.CORSMiddleware‘,
4
]
 
 
在这里跨域还要分简单请求与复杂请求
如果只是发送GET请求那么则说明是简单请求!反之为复杂请求!

跨域的问题

跨域分为两类:一时get跨域,而是post跨域。常见的是三种:一种是jsonp,$.ajax({url:"http://127.0.0.1/~chenjiebin/mycode/php/crossdomain/index.php",dataType:"jsonp",jsonp:"callback",context:document.body,success:function(data){conso 查看详情

springboot的cros跨域问题经常始终不能解决跨域的原因

SpringBoot的Cros跨域问题经常始终不能解决跨域的原因问题问题的根本原因配置方法SpringBoot2.2.X版本SpringBoot2.5.X版本问题在配置跨域的@Configuration的时候,发现无论是.allowedOrigns()还是.allowedOriginParrtens()都解决不了的时候请看... 查看详情

求助关于chrome跨域的问题

参考技术Ajsonp能使用的前提是跨域地址给你提供了访问方式,就像你不可以直接请求baidu地址一样,百度又没有给你提供这样的服务,一般解决跨域问题, 查看详情

跨域的 Cors 问题

】跨域的Cors问题【英文标题】:Corsissueacrossdomains【发布时间】:2017-10-0923:54:40【问题描述】:我们有一个写得很糟糕的遗留网站应用程序,我们正在尝试慢慢地转换为MVC。作为其中的一部分,我们将创建一组MVC控制器,我们希... 查看详情

springboot的cros跨域问题经常始终不能解决跨域的原因(代码片段)

SpringBoot的Cros跨域问题经常始终不能解决跨域的原因问题问题的根本原因配置方法SpringBoot2.2.X版本SpringBoot2.5.X版本问题在配置跨域的@Configuration的时候,发现无论是.allowedOrigns()还是.allowedOriginParrtens()都解决不了的时候请看... 查看详情

跨域的问题(代码片段)

如果后台给的swagger地址是 http://47.98.216.251/tbt_user/swagger-ui.html 这样的我一般跨域的文件是‘/luoye_admin‘:target:‘http://192.168.0.139:80/luoye_admin‘,changeOrigin:true,pathRewrite:‘^/luoye_admin‘:‘‘&nb 查看详情

解决跨域的问题

什么是跨域1、document.domain+iframe的设置2、动态创建script3、利用iframe和location.hash4、window.name实现的跨域数据传输5、使用HTML5postMessage6、利用flash 什么是跨域JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在... 查看详情

为什么会有跨域的问题出现,如何解决跨域问题(代码片段)

为什么会有跨域的问题出现,如何解决跨域问题什么是跨域​定义:跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都... 查看详情

跨域的 NetTcpBinding

】跨域的NetTcpBinding【英文标题】:NetTcpBindingacrossDomains【发布时间】:2012-11-1410:29:12【问题描述】:我对这一切都很陌生,所以我什至不知道我应该问什么问题。我在域A上有WCF服务。将从域B调用。域A不信任域B。我很确定我的cl... 查看详情

跨域的三种解决方式

跨域问题跨域问题对于WEB前端工程师来说是比较重要的一个问题,因为我们时常需要去解决这样的问题,在其他类型的前端开发来说,他们并没有跨域问题跨域问题的产生因为浏览器有同源策略:只有在同域名,同端口,同协议... 查看详情

相关前台跨域的解决方式(代码片段)

title:前端跨域处理方式date:2018-07-0800:37:29categories:Web前端tags:跨域cors关于跨域请求解觉方案问题关于浏览器跨域问题,项目中也遇到了,看了项目上一些代码的处理方式,感觉存在不少不大完善的地方,因此对于跨域,想好好梳... 查看详情

h5标签canvas关于getimagedata跨域的问题

h5标签canvas关于getImageData跨域的问题  在学习h5的时候,canvas标签中getImageData()报错:securityerror!具体代码如下(chrome浏览器):functioncreateGSCanvas(img){varcanvas=document.createElement("canvas");canvas.width=img.widt 查看详情

单点登录关于cookie跨域的问题

publicvoidProcessRequest(HttpContextcontext){HttpCookiecookie=newHttpCookie("name","www.Admin10000.com");cookie.Domain="test2.com";cookie.Path="/";cookie.Expires=DateTime.Now.AddMinutes(10000);context 查看详情

springboot的cros跨域问题经常始终不能解决跨域的原因(代码片段)

SpringBoot的Cros跨域问题经常始终不能解决跨域的原因问题问题的根本原因配置方法SpringBoot2.2.X版本SpringBoot2.5.X版本问题在配置跨域的@Configuration的时候,发现无论是.allowedOrigns()还是.allowedOriginParrtens()都解决不了的时候请看... 查看详情

springboot的cros跨域问题经常始终不能解决跨域的原因(代码片段)

SpringBoot的Cros跨域问题经常始终不能解决跨域的原因问题问题的根本原因配置方法SpringBoot2.2.X版本SpringBoot2.5.X版本问题在配置跨域的@Configuration的时候,发现无论是.allowedOrigns()还是.allowedOriginParrtens()都解决不了的时候请看... 查看详情

javascript中跨域的http post请求

】javascript中跨域的httppost请求【英文标题】:httppostrequestwithcross-origininjavascript【发布时间】:2012-01-0402:38:41【问题描述】:我在Firefox中的httppost调用有问题。我知道当存在跨域时,firefox首先在POST之前执行OPTIONS以了解access-control... 查看详情

聊一聊实现session跨域的问题

...  为了阅读方便,小白代号Q,大神代号WQ:怎么实现session跨域?W:别用系统session即可Q:那用什么session?自己存session?W:自己有啥不行吗  系统的方案是改配置,允许一些域。不过没用直接自己处理会话来的干脆实际    会话... 查看详情

cookie跨域的问题

...这个是浏览器出于对cookie的保护造成的,也就是cookie无法跨域设置。对于子域名也有如下规则,当前域名只能设置当前域名以及他的父域名,不能设置子域名如在www.wo.cao.baidu.com 域名下只能设置cao.baidu.com,baidu.com不能设置da.ji... 查看详情