VSCode调试揭秘:Live Server助力完美测试Cookie与Session,远超“Open in Browser“!

news2024/11/28 14:44:02

在这里插入图片描述

文章目录

  • 一、项目场景:
  • 二、问题描述
    • 1. open in browser:
    • 2. open with live server
  • 三、原因分析:
    • 先了解一下open in browser和open with live server的区别
    • 两者的优缺点
      • open in browser
      • open with live server
  • 四、解决方案:
    • 总结

一、项目场景:

在上篇文章Django框架中Ajax GET与POST请求的实战应用中,VSCode调试前端页面时,使用open in browseropen with live server会产生不同的结果。


二、问题描述

两种不同打开前端页面的方式:
在这里插入图片描述

1. open in browser:

open in browser:
在这里插入图片描述
登录成功会自动跳转新闻页面(正常情况下会保持原有session,并显示数据库中存储的新闻数据):
在这里插入图片描述
sessionid改变,且没有获取到应得的新闻数据

2. open with live server

open with live server:
在这里插入图片描述
登录成功,跳转新闻页面(且sessionid没有发生改变):
在这里插入图片描述


三、原因分析:

先了解一下open in browser和open with live server的区别

  1. 访问地址与方式:
    • open in browser:此功能允许用户直接在默认浏览器中打开当前编辑的HTML文件。URL显示的是电脑存储的默认路径,即项目保存的电脑地址。由于是直接打开文件,所以可能会遇到图片加载不出来的问题,特别是在文件路径相对复杂或图片资源未正确引用时。此外,当在写代码的同时,保存代码后,需要手动刷新浏览器页面才能看到最新的效果
    • open with live server:此功能通过Live Server插件在本地创建一个web服务器,并使用该服务器打开HTML文件。URL通常是以127.0.0.1(即localhost)开头,并附加一个端口号(如5500)。由于是通过web服务器打开,它可以解决图片不显示的问题,并且支持动态更新。在写代码时,只需要保存文件,浏览器端的页面就会自动刷新并显示最新的效果。
  2. 开发效率:
    • open in browser:虽然可以直接打开文件,但由于需要手动刷新页面来查看最新的效果,这在一定程度上降低了开发效率。
    • open with live server:通过实时预览和自动刷新的功能,大大提高了开发效率。开发者可以实时查看代码修改后的效果,而无需手动操作。
  3. 调试功能:
    • open in browser:虽然可以在浏览器中查看页面效果,但通常不支持在浏览器中进行调试。
    • open with live server:支持在浏览器中进行调试,能够快速定位并修复页面中的问题。此外,它还支持在浏览器中输出JavaScript的控制台信息,方便进行调试和错误查找。
  4. 配置与自定义:
    • open in browser:支持配置默认浏览器、浏览器路径、端口号和URL参数等。
    • open with live server:除了上述配置外,还可以进行更高级的自定义设置,如自定义服务器选项、设置文件监听规则等。

两者的优缺点

open in browser

优点:

  • 直接性:可以直接在默认浏览器中打开当前编辑的HTML文件,无需额外的插件或设置。
  • 简单性:操作简单,对于初学者而言,无需额外的学习成本。

缺点:

  • 图片加载问题:由于URL显示的是电脑存储的默认路径,可能会遇到图片加载不出来的问题,特别是在文件路径相对复杂或图片资源未正确引用时。
  • 非实时预览:在写代码的同时,保存代码后,需要手动刷新浏览器页面才能看到最新的效果,这在开发时较为麻烦,降低了开发效率。

open with live server

优点:

  • 实时预览:当在编辑器中保存对HTML、CSS或JavaScript文件的更改时,Live Server会自动刷新浏览器,开发者可以立即看到更改的效果,而无需手动刷新,这大大提高了开发效率。
  • 动态页面:通过web服务器打开,解决了图片不显示的问题,访问的是动态直播页面,更加贴近真实的网页浏览体验。
  • 轻量级与快速Live Server是一个轻量级的插件,安装和启动都非常迅速,不会占用太多的系统资源。
  • 一键启动:只需在VS Code中点击几下,就可以启动Live Server,并开始实时预览网页。
  • 支持跨域请求:在开发过程中,如果需要与其他API进行交互,Live Server支持跨域请求,这对于前端开发人员来说是一个非常重要的功能。
  • 自定义性强:可以通过命令行参数来自定义Live Server的行为,例如指定服务器端口、主机名等。

缺点:

  • 功能相对基础:虽然Live Server提供了实时重载和本地服务器的基本功能,但对于更复杂的需求(如多设备同步、高级调试等),它可能不如其他工具强大。
  • 可能需要额外配置:在某些情况下,可能需要配置防火墙或网络设置,以确保Live Server可以正常工作。
  • 安全性:由于Live Server通常用于本地开发,它可能不如生产环境下的服务器软件安全。因此,不建议在生产环境中使用Live Server。

四、解决方案:

在上述分析的基础上,分析在跨域方面open in browser open with live server 的区别,这些区别主要体现在对Cookie、Session的设置和获取上。如下所示:

open in browser

  • 直接访问文件open in browser 是直接打开HTML文件,而不是通过HTTP服务器。因此,它不会涉及跨域请求的问题。然而,这也意味着它无法处理跨域相关的CookieSession

  • Cookie和Session的限制由于直接访问文件,浏览器可能会将请求视为来自“null”源(即文件协议,而不是HTTP或HTTPS),这可能导致CORS(跨来源资源共享)策略阻止访问其他源(如API服务器)的CookieSession
  • 开发体验:在开发过程中,如果需要在本地测试跨域CookieSession的功能,open in browser 可能不是最佳选择。

open with live server

  • 通过HTTP服务器访问open with live server 使用Live Server插件在本地创建一个web服务器,并通过该服务器打开HTML文件。这意味着所有的请求都是通过HTTP协议发送的,可以更容易地处理跨域请求。
  • Cookie和Session的支持:由于通过HTTP服务器访问,open with live server 可以支持跨域Cookie和Session这允许你在本地测试跨域身份验证和会话管理功能。
  • 配置灵活性Live Server插件允许你配置服务器的各种设置,包括端口号、主机名等。这使得你可以更容易地控制跨域请求的行为。
  • 开发体验:对于需要测试跨域功能的开发者来说,open with live server 提供了一个更加灵活和方便的解决方案。你可以轻松地设置和测试跨域Cookie和Session,而无需担心CORS策略的限制。

总结

  • open in browser 适用于简单的本地文件访问,但不支持跨域Cookie和Session的处理。
  • open with live server 通过本地HTTP服务器访问文件,支持跨域Cookie和Session的处理,并提供更多的配置灵活性。对于需要测试跨域功能的开发者来说,它是一个更好的选择。

所以,在开发过程中,如果需要处理跨域相关的Cookie和Session,建议使用open with live server。然而,如果你只是需要简单地查看本地HTML文件,open in browser 可能就足够了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1804765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开发网站,如何给上传图片的服务器目录授权

开发网站,上传图像时提示”上传图片失败,Impossible to create the root directory /var/www/html/xxxxx/public/uploads/avatar/20240608.“ 在Ubuntu上,你可以通过调整文件夹权限来解决这个问题。首先,确保Web服务器&#xff08…

173.二叉树:找树左下角的值(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}* Tree…

数据集(图片)求均值和标准差

数据集(图片)求均值和标准差 一、环境配置 运行一下命令完成环境配置 pip install opencv-python numpy二、源代码 import os import cv2 import numpy as npdef compute_mean_std(Img_folders):all_file []for images_path in Img_folders:all_file…

攻防世界---misc---What-is-this

1、下载附件,是一个.gz的文件夹,是linux系统的压缩包后缀 2、在kali中解压,解压之后得到两张图片 3、想把图片拖在物理机中分析,但是拖不了,所以将.gz文件在物理机中改为.zip,解压之后看到了一个没有后缀的…

Java从入门到放弃

线程池的主要作用 线程池的设计主要是为了管理线程,为了让用户不需要再关系线程的创建和销毁,只需要使用线程池中的线程即可。 同时线程池的出现也为性能的提升做出了很多贡献: 降低了资源的消耗:不会频繁的创建、销毁线程&…

Windows 10 找不到Microsoft Edge 浏览器

下载链接 了解 Microsoft Edge 手动下载浏览器 问题说明 一般来说,windows10系统应该是自带浏览器edge的,但有的电脑就是没有找到edge浏览器,可能系统是精简过的,可能是被卸载了。如下,控制面板确实没找到程序。 ​ …

端午节前夕送给高考学子的祝福

据中国新闻网消息:6月7日,2024年全国高考正式拉开大幕,全国1342万考生奔赴考场。各地纷纷开启“护考”模式和“静音模式”,为考生们创造良好的学习、考试、休息环境。 明天是2024年端午节,笔者祝愿1342万考生都将获得…

生信软件22 - 测序数据5‘和3‘端reads修剪工具sickle

大多数现代测序技术产生的3 端和5 端质量降低的reads,这两个区域错误地calling base会对组装、下游生物信息学分析造成影响。sickle使用滑动窗口沿着质量和长度阈值,根据质量是否低于阈值来修剪reads的3 端, 根据质量是否超过阈值来修剪reads…

最快的开源UDP传输工具:Kcptun

Kcptun:极速网络隧道,让数据传输飞起来!- 精选真开源,释放新价值。 概览 kcptun 是一个轻量级、高性能的TCP/UDP网络加速工具,由xtaci开发并托管在GitHub上。它通过使用kcp协议,为网络数据传输提供了一个快…

Django redirect()函数实现页面重定向

1,通过路由反向解析进行重定向 1.1 添加视图函数 myshop/app2/views.py from django.http import HttpResponse from django.shortcuts import render from django.urls import reverse def index(request):return HttpResponse("app2 的index")# 反向…

QField如何打开工程或数据文件

Field有个文件选择器,允许从本地设备打开工程。如果想从云端打开文件,请参阅 QFieldCloud 。 注意:请注意,卸载QField时,应用程序文件夹将被删除,而更新则不会。 导入并打开本地工程 QField界面 当转到 …

Unity DOTS技术(十五) 物理系统

要解决性能的瓶颈问题,在DOTS中我们将不再使用Unity自带的物理组件. 下面来分享一下在DOTS中当如何使用物理插件. 一.导入插件 在使用DOTS系创建的实体我们会发现,游戏物体无法受物理系统影响进行运动.于是我们需要添加物理系统插件. 1.打开Package Manager > 搜索插件Uni…

【NI国产替代】产线综测仪,高速高精度测量的示波器模块与任意波形发生器模块,多样化 DUT 供电;高精度万用表模块

Xilinx ZYNQ-7000 系列 FPGA 控制模块多样化 DUT 供电;高精度万用表模块高速高精度测量的示波器模块与任意波形发生器模块可选配射频开关与音频信号源和音频分析仪模块可快速部署的测试平台软件,支持测试计划导入、开发、执行管理具有良好的扩展性&#…

1.2-自然语言的分布式表示-基于计数的方法

本篇笔记对应的视频链接为: 3-基于计数的方法表示单词-将文字转换成编号的预处理工作_哔哩哔哩_bilibili;4-基于计数的方法表示单词-使用共现矩阵进行单词的分布式表示_哔哩哔哩_bilibili;5-基于计数的方法表示单词-单词之间相似度计算_哔哩哔…

超详解——python数字和运算_——小白篇

目录 1.的位运算 2. 常用内置函数/模块 math模块: random模块: decimal模块: 3.内置函数: 总结: 1.的位运算 位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符: 按位与&…

openh264 场景变化检测算法源码分析

文件位置 openh264/codec/processing/scenechangedetection/SceneChangeDetection.cppopenh264/codec/processing/scenechangedetection/SceneChangeDetection.h 代码流程 说明: 通过代码流程分析,当METHOD_SCENE_CHANGE_DETECTION_SCREEN场景类型为时…

git 的基本操作 Master and branch的版本合并 @ VS 1019

前言: 在VS 2019有git 的可视化管理,但,感觉微软其实就是在git上包了一层。版本冲突后,还是要靠git 的命令行代码搞。本文记录了一次,branch和master的版本合并的过程。作为,后续的参考。 【注意,这个是一…

相机标定中一些细节--畸变模型和参数

张正友标定方法做相机标定的主要过程是先估计每张图片的单应性矩阵,然后通过这一系列的单应性矩阵估计出内外参数初值,最后再考虑畸变模型的加入进行非线性优化。同时优化内参、外参和畸变参使得重投影误差最小。 镜头的畸变表现出来的非线性关系&#…

处理异常不再困难-try-catch-finally和throw语句详解

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…