javascript中的跨域问题是什么_JSONP和CORS如何解决?

admin 百科 14
跨域问题本质是浏览器同源策略限制,防止恶意网站窃取用户数据;JSONP利用script标签绕过但仅支持GET且存XSS风险;CORS通过服务端响应头正向解决,需配置Access-Control-Allow-Origin等字段。

javascript中的跨域问题是什么_JSONP和CORS如何解决?-第1张图片-佛山资讯网

跨域问题本质是浏览器的同源策略限制,不是JavaScript语言本身的问题,而是浏览器出于安全考虑,阻止前端脚本向非同源(协议、域名、端口任一不同)的服务器发起HTTP请求并读取响应。

为什么会有跨域限制?

同源策略防止恶意网站通过脚本窃取其他站点的用户数据(比如 Cookie、DOM 内容、API 响应)。例如:你登录了网银页面,另一个恶意网页若能随意发请求到网银接口并读取返回结果,就可能泄露账户信息。

注意:跨域限制只影响浏览器中的 JavaScript 发起的请求(如 fetchXMLHttpRequest),不影响 HTML 标签加载资源(如 <script></script>),这也是 JSONP 能绕过限制的基础。

JSONP 是怎么“绕过”跨域的?

JSONP(JSON with Padding)利用 <script></script> 标签不受同源策略限制的特性。它把请求封装成一个 script 标签的 src 请求,并要求后端返回一段可执行的 JavaScript 函数调用,参数是真正的数据。

立即学习“Java免费学习笔记(深入)”;

典型流程:

  • 前端定义一个全局回调函数,比如 window.handleData = function(data) { ... }
  • 动态创建
  • 服务端返回:handleData({"name": "Alice", "age": 30})
  • 浏览器执行该脚本,触发回调,拿到数据

缺点明显:只支持 GET 请求;依赖服务端配合返回特定格式;没有错误捕获机制(script 加载失败无法区分是网络问题还是语法错误);存在 XSS 风险(执行任意返回的 JS);已基本被现代项目淘汰。

标签: javascript python java html js 前端 node.js json node vite ngi

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~