开发过程中印象最深刻的Bug

简介: 开发过程中印象最深刻的Bug
  • 在工作中遇到各种各样的bug。但是参加工作第一天起,第一次所遇到的bug是一个跨域的问题。

对跨域的这个问题,首先需要了解什么是跨域。大体可以分为三类,协议不同,域名不同,端口不同。

浏览器的同源策略是确保浏览器安全的特别重要的一个安全策略,如果没有同源策略:在一个域上加载的脚本不允许访问另一个域上文本属性 不然通过内嵌 iframe 恶意添加 javaScript 脚本就可以轻松获取到用户信息

何为同源:url 是由协议、域名、端口和路径组成 如果两个路径的协议、域名、端口都相同则表示再同一个域上

在浏览器上

理解了跨域原理,在说说日常项目中,解决跨域的方案

1.JSON跨域

 jsonp的原理就是利用

(1) jquery Ajax实现:

 $.ajax({
   url: 'http://localhost:8080/login',
   type: 'get',
   dataType: 'jsonp',  // 请求方式为jsonp
   data: {}
 });

2.Vue跨域处理

  • 利用http-proxy-middleware 代理解决
devServer:{
    proxy:{
       "/api":{
             target:"http://localhost:8080" //数据接口的地址 
             changeOrigin:true,  // 允许跨域 
             secure:false, // 允许运行在https上   
             pathRewrite: { //如果你不想总是传递 /api,可以重写路径
                  '^/api': ''
             }   
        } 
    }
  1. 后端使用cors解决跨域问题,这里采用node + express实现

首先安装 npm install cors -S

然后在app.js直接使用即可

app.use(require('cors')())

4.nginx代理跨域

nginx代理跨域,实质和CORS跨域原理一样,通过配置文件设置请求响应头Access-Control-Allow-Origin…等字段。

通过Nginx配置一个代理服务器域名与aaa相同,端口不同)做跳板机,反向代理访问aaa2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域访问

#proxy服务器
server {
    listen       80;
    server_name  www.domain1.com;

    location / {
        proxy_pass   http://aaa.com;  #反向代理
        proxy_cookie_domain www.domain2.com www.domain1.com; #修改cookie里域名
        index  index.html index.htm;

        # 当用webpack-dev-server等中间件代理接口访问nignx时,此时无浏览器参与,故没有同源限制,下面的跨域配置可不启用
        add_header Access-Control-Allow-Origin http://www.domain1.com;  #当前端只跨域不带cookie时,可为*
        add_header Access-Control-Allow-Credentials true;
    }
}

以上就是解决跨域最常用见的方法

目录
相关文章
|
机器学习/深度学习 传感器 人工智能
深度学习之自主学习和任务规划
基于深度学习的自主学习和任务规划,是指通过深度学习算法使人工智能(AI)系统能够自主地从环境中学习,并根据特定的目标和任务,规划出有效的解决方案。
473 3
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】 YOLOv8 更换骨干网络之GhostNetV2 长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了轻量级CNNs和注意力机制在移动设备上的应用。文章提出了一种名为GhostNetV2的新架构,结合了硬件友好的DFC注意力机制,强化了特征表达能力和全局信息捕获,同时保持低计算成本和高效推理。GhostNetV2在ImageNet上以167M FLOPs达到75.3%的top-1准确率,优于同类模型。创新点包括DFC注意力、模型结构优化和效率提升。源代码可在GitHub和MindSpore平台上找到。此外,还提到了YOLOv8的相关实现和任务配置。
|
Python
Python打印异常的方法
Python打印异常的方法
451 0
|
SQL 数据采集 存储
工作经验分享:Spark调优【优化后性能提升1200%】
工作经验分享:Spark调优【优化后性能提升1200%】
1284 1
工作经验分享:Spark调优【优化后性能提升1200%】
|
JSON 测试技术 数据安全/隐私保护
postman使用--批量执行测试用例和数据驱动
postman使用--批量执行测试用例和数据驱动
|
Python
pandas 数据循环修改列后保存为csv文件
pandas 数据循环修改列后保存为csv文件
515 0
Postman批量运行
Postman批量运行:入口、批量运行界面 、批量运行方式、批量运行结果:列表和视图形式等简单介绍。。。
339 0
Postman批量运行
|
机器学习/深度学习 数据采集 自然语言处理
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦! ⛵
2022了你还不知道“低代码”?一起看看数据分析、机器学习、深度学习领域最受欢迎的 Python 低代码工具:D-Tale、AutoViz、Lux、Pandas-Profiling、PyCaret、PyTorch Lightning、Hugging Face Transformers。
735 1
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦! ⛵
|
SQL 分布式计算 数据可视化
【大数据学习篇12】 Spark项目实战-数据可视化(一)
【大数据学习篇12】 Spark项目实战-数据可视化
714 0