作为一个前端,关于跨域我有话说

跨域问题困扰着前端开发者,但解决方案其实并不复杂。当浏览器的同源策略阻止了AJAX请求,我们可以利用CORS(跨域资源共享)来打破限制。只需引入npm包cors,并在服务器端配置两行代码,即可实现跨域请求,让前后端协作更加顺畅。

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

跨域问题是我们前端开发中经常会遇到的问题,如果后端没帮我们弄好,我们也要学会自给自足,俗话说技多不压身!接下来开始跨域!!!

想必这张图的报错是各位大佬开发中会看见的吧

为什么会报这个错误呢,就是我们说的跨域问题

 

什么原因导致了浏览器报跨域错误

发起ajax请求的那个页面的地址 和 ajax接口地址 不在同一个域中!!!

浏览器向web服务器发起http请求时 ,如果同时满足以下三个条件时,就会出现跨域问题,从而导致ajax请求失败:

(1)请求响应双方url不同源。

双方url:发出请求所在的页面 与 所请求的资源的url

同源是指:协议相同域名相同端口相同

以下就是不同源的:

http://127.0.0.1:5500/message_front/index.html 请求http://localhost:8080/getmsg

网络中不同源的请求有很多。

(2)请求类型是xhr请求。就是常说的ajax请求。不是请求图片资源,js文件,css文件等

(3)浏览器觉得不安全。跨域问题出现的基本原因是浏览器的同源策略。同源策略是一个重要的安全策略,它限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。

注意,错误是发生在浏览器端的。请求是可以正常从浏览器发到服务器端,服务器也可以处理请求,只是返回到浏览器端时出错了。

最后如何解决呢!超级简单!!!

CORS

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10(ie8通过XDomainRequest能支持CORS)。

使用CORS

  1. 它是一个npm包,要单独下载使用 npm 包 cors
     npm i cors)导包

  2. 注意代码应该放在顶部

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

ok,跨域问题解决,两行代码解决我们的问题! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值