跨域介绍及Java中常见的跨域解决方案

介绍

跨域(Cross-Origin)指的是在浏览器中,由于安全策略的限制,当前网页的 JavaScript 代码无法直接访问不同源(协议、域名、端口)的资源。这意味着如果网页尝试通过 AJAX、Fetch 或 WebSocket 等方式向不同源的服务器发送请求,浏览器会阻止这些请求,从而避免潜在的安全风险。

产生原因

浏览器同源策略(Same-Origin Policy)是一种安全机制,用于限制从一个源加载的文档或脚本如何与来自其他源的资源进行交互。同源策略的目的是保护用户隐私和防止恶意代码的执行。

同源策略要求两个 URL 的协议、主机名和端口号必须完全相同,才被认为是同源。如果两个 URL 的协议、主机名或端口号之一不同,就会被视为跨源请求,那么在默认情况下,浏览器会阻止跨源请求的访问。

同源策略限制了以下几个方面的跨源行为:

  1. DOM 访问限制:跨源的 JavaScript 无法访问不同源页面的 DOM 结构。

  2. 数据访问限制:跨源的 JavaScript 无法读取不同源的数据,如读取 Cookies、LocalStorage 或发送 AJAX 请求。

  3. 脚本执行限制:无法加载不同源的 JavaScript 脚本。

为了允许某些跨源行为,浏览器提供了一些机制,如跨域资源共享(CORS)和 JSONP。这些机制通过特定的头部字段或动态创建 script 标签来允许跨源请求。

需要注意的是,同源策略仅在浏览器环境中起作用,对于服务器端和其他环境并不适用。服务器端可以通过其他方式进行跨域访问,如代理服务器或后端接口配置等。

常见解决方案

跨域限制的原因是浏览器的同源策略(Same-Origin Policy),该策略要求网页只能访问与其来源相同的资源。但是,有时候我们需要在不同源之间进行数据交互,这就需要使用跨域解决方案。

  • JSONP(JSON with Padding):通过动态创建

你可能感兴趣的:(Java,SpringBoot,java,跨域,cors)