当前位置: 首页 > news >正文

跨域问题以及使用vscode的LiveServer插件跨域访问

目录

  • 现象
  • 跨域问题的定义(文心一言)
  • 解决办法
    • 同源部署
    • 后端
    • 代理
      • VS Code + LiveServer

现象

以下前端代码部署后,在网页访问时报错:No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

$.ajax({url: 'http://192.168.31.22:10004/searchPicTags',  //真实地址type: 'POST',data: JSON.stringify({ tags: "T恤,短袖" }),contentType: 'application/json',success: function(response) {const data = response.data;alert("fetchData " +JSON.stringify(response));renderCardData(data);},error: function(xhr, status, error) {console.error('Error fetching data:', error);layer.msg('数据加载失败,请重试!');}
});

跨域问题的定义(文心一言)

跨域问题(Cross-Origin Resource Sharing,CORS)是指在Web开发中,当一个网页尝试访问另一个与其不同源(即域名、协议或端口号不同)的资源时,浏览器出于安全考虑,会限制这种跨源HTTP请求。跨域问题本质上是由于浏览器的同源策略(Same-Origin Policy)所导致的。同源策略是一种浏览器安全机制,它限制了从一个源加载的文档或脚本与另一个源的资源进行交互。

解决办法

同源部署

避免垮域问题,比如直接把前端包部署在后端java spring服务的static文件夹下。只适合简单项目,不适合前后端分离架构。

后端

  • 通常在后端解决,比如允许特定的源,又比如使用@CrossOrigin注解来允许跨域请求。
  • WebSockets协议允许跨源通信,不受同源策略的限制。因此,可以使用WebSockets来解决跨域问题。但需要注意的是,WebSockets主要用于实时通信场景,而不是简单的HTTP请求。(文心一言)

代理

比如前端开发的时候配下 webpack 的 devserver 的 proxy 代理。部署生产环境时用nginx转发。

我开发某前端程序时是用VS Code + LiveServer插件来调试的,突然想到 Live Server作为web服务器难道不能配置代理吗,这样我就不用辛苦在我本地去另外装webpack或者nginx了。试了下果然行:

VS Code + LiveServer

Live Server插件设置界面:
在这里插入图片描述
settings.json界面:
在这里插入图片描述
true 表示启用代理
/searchPicTags 代表匹配127.0.0.1:5500中一旦匹配到/searchPicTags就使用下面配的代理地址。1

前端代码改访问url:

$.ajax({// url: 'http://192.168.31.22:10004/searchPicTags',  //真实地址url: 'http://127.0.0.1:5500/searchPicTags',   //代理地址type: 'POST',data: JSON.stringify({ tags: "T恤,短袖" }),contentType: 'application/json',success: function(response) {const data = response.data;alert("fetchData " +JSON.stringify(response));renderCardData(data);},error: function(xhr, status, error) {console.error('Error fetching data:', error);layer.msg('数据加载失败,请重试!');}
});

重启live server后,问题解决。


  1. vscode本地h5请求跨域代理live-server ↩︎

http://www.lryc.cn/news/479485.html

相关文章:

  • 现代Web开发:WebSocket 实时通信详解
  • 《深度学习》——深度学习基础知识(全连接神经网络)
  • nginx 部署2个相同的vue
  • 利用Java easyExcel库实现高效Excel数据处理
  • Vulnhub靶场 Metasploitable: 1 练习(上)
  • 《Python编程实训快速上手》第二天--列表与元组
  • jangow靶机
  • 使用UDP协议传输视频流!(分片、缓存)
  • Pinia小菠萝(状态管理器)
  • Python知识点:基于Python工具,如何使用Web3.py进行以太坊智能合约开发
  • 【简信CRM-注册安全分析报告】
  • ssm+vue694基于Java的药店药品信息管理系统的设计与实现
  • Sentinel微服务保护
  • 喜讯!实在Agent智能体入选《2024年度最佳企业服务AI产品榜》
  • Aop+自定义注解实现数据字典映射
  • 大语言模型(LLM)入门级选手初学教程 III
  • STM32G0xx使用LL库将Flash页分块方式存储数据实现一次擦除可多次写入
  • SAP B1 认证考试习题 - 解析版(三)
  • 数据库开发规范
  • 使用python向钉钉群聊发送消息
  • YOLOv11改进:SE注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,与其他一些注意力机制相比,不仅准确度更高,而且模型更加轻量化。)
  • STM32 基于HAL库和STM32cubeIDE的应用教程 (二)--GPIO的使用
  • 【毫米波雷达(七)】自动驾驶汽车中的精准定位——RTK定位技术
  • Transformer和BERT的区别
  • linux 加载uPD720201固件
  • C语言中的信号量semaphore详解
  • 0087__DirectX11 With Windows SDK--02 顶点/像素着色器的创建、顶点缓冲区
  • Windows换机华为擎云(银河麒麟V10+麒麟9000C CPU)后,使用selenium的程序怎么办(20241030)
  • linux 下 signal() 函数的用法,信号类型在哪里定义的?
  • 享元模式及其运用场景:结合工厂模式和单例模式优化内存使用