解决本地浏览器运行项目时的跨域问题-Access to XMLHttpRequest at ‘file:///D:/WebPracties/newSmartCity/data/funData.json

本文介绍了在本地开发中遇到的浏览器跨域问题及其解决方案,包括临时关闭浏览器安全设置、创建特殊配置的浏览器快捷方式以及使用VSCode Live Server插件。通过这些方法,可以成功运行涉及跨域的项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决本地浏览器运行项目时的跨域问题-Access to XMLHttpRequest at 'file:///D:/WebPracties/xxxxxx/data/funData.json

问题描述

这几天做项目的时候,遇到这样一个问题,写了一个页面,用js动态的创建了一系列li,让其在页面上展示,获取数据的方式是通过json模拟,结果运行界面 的时候,出现了差错,我以为是代码写错了,仔细检查了一遍,发现代码,没有任何问题,看了一下报错原因,上网查了一下,发现是ajax跨域问题。
先看一下报错的样子
在这里插入图片描述

解决办法一

首先声明,这种方式只是暂时的,浏览器一经关闭则不起作用了。以谷歌浏览器为例
首先,找到你浏览器安装的位置,一般默认安装的位置C:\Program Files\Google\Chrome\Application
然后、在该目录打开命令行,直接在文件夹导航栏输入cmd,敲回车
在这里插入图片描述
回车之后就进入了cmd命令行
在这里插入图片描述
最后只需要输入一条这样的命令
chrome.exe --disable-web-security --user-data-dir=C:\MyChromeUserFata
在这里插入图片描述
然后敲回车就会自动进入一个页面

### Spring Boot 解决 CORS 配置 `Access-Control-Allow-Origin` 示例 #### 使用 @CrossOrigin 注解方式 在Spring Boot中,可以通过使用`@CrossOrigin`注解来轻松实现资源共享的功能。此注解能够应用于整个控制器或者特定的方法之上。对于全局性的需求,在类级别添加该注解即可;而对于某些特殊接口,则可以在对应的方法上面单独定义。 ```java @RestController @RequestMapping("/api") public class MyController { @GetMapping("/data") @CrossOrigin(origins = "http://example.com", methods = {RequestMethod.GET}) public ResponseEntity<String> getData() { return new ResponseEntity<>("Data from server", HttpStatus.OK); } } ``` 上述代码片段展示了如何通过指定允许访问的源以及HTTP方法来精确控制哪些客户端可以发起请求[^2]。 #### 配置 WebMvcConfigurer 实现更灵活的CORS支持 除了利用注解外,还可以借助于自定义配置类的形式进一步增强灵活性。创建一个新的Java类继承自`WebMvcConfigurer`接口,并重写其中的相关方法完成更加复杂的逻辑设定: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 对所有的路径都生效 .allowedOrigins("*") // 允许所有名进行调用 .allowCredentials(true)// 是否发送Cookie .maxAge(3600); // 提前预检缓存间(s) } } ``` 这段程序说明了怎样一次性为多个API端点统一设置规则,同也指出了几个重要的参数选项及其作用。 当服务器接收到带有合法`Origin`字段值的请求,它会在响应头部加入必要的CORS信息以便告知浏览器此次通信是被授权过的。例如,下面是一个成功的响应实例: ``` HTTP/1.1 200 OK Access-Control-Allow-Origin: http://api.bob.com Access-Control-Allow-Credentials: true Content-Type: application/json;charset=UTF-8 ... ``` 这里特别强调的是`Access-Control-Allow-Origin`这个头用来表明当前资源可被哪个站点所获取,而`Access-Control-Allow-Credentials`则决定了是否能携带认证信息(如Cookies)。这些细节都是为了确保安全性和功能性之间的平衡[^3]。 另外需要注意的一点是在实际项目部署过程中可能会涉及到预飞行(`OPTIONS`)请求处理的问题。比如当浏览器尝试发送一个非简单类型的HTTP动词(像DELETE, PUT等),或者是包含了额外的自定义Header的情况下,都会先触发一次这样的探测行为以确认目标服务端确实开放了相应的权限给到自己。此如果一切正常的话,那么后续的实际业务交互就能顺利进行了[^4]。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值