实现跨域

实现跨域有多种方式, CORS 和 @CrossOrigin 是服务端解决跨域的方式,而 JSONP 是一种客户端解决跨域的方式。以下是一些主要的跨域解决方案:

  1. CORS (Cross-Origin Resource Sharing):

    • 服务端设置: 服务端通过在响应头中添加 CORS 相关的信息,允许指定的域名或所有域名的访问。在 Express 框架中,可以使用 cors 中间件,而在其他后端框架中,需要手动设置响应头。

    • 例子:

      ini 复制代码
      const express = require('express');
      const cors = require('cors');
      
      const app = express();
      app.use(cors()); // 允许所有域名访问
  2. JSONP (JSON with Padding):

    • 原理: 利用 <script> 标签没有跨域限制的特性,通过在页面上动态创建 <script> 标签,将跨域的数据作为 JavaScript 脚本执行。

    • 例子:

      ini 复制代码
      function jsonpCallback(data) {
        console.log(data);
      }
      
      const script = document.createElement('script');
      script.src = 'https://lfsun.com/data?callback=jsonpCallback';
      document.body.appendChild(script);
  3. @CrossOrigin 注解(Spring Framework):

    • 服务端设置: 在 Spring Framework 中,可以使用 @CrossOrigin 注解在控制器方法上标记允许跨域访问的配置。

    • 例子:

      less 复制代码
      @RestController
      public class MyController {
          @CrossOrigin(origins = "http://allowed-origin.com")
          @GetMapping("/data")
          public ResponseEntity<String> getData() {
              // Handle request
          }
      }
  4. 代理:

    • 原理: 在同源策略下,浏览器允许通过代理的方式请求其他域的数据。通过在服务端设置代理,将请求发送到目标域,然后将结果返回给客户端。

    • 例子: 配置反向代理,将请求转发到目标服务器。

      bash 复制代码
      /api -> http://example.com/api
  5. WebSocket:

    • 原理: WebSocket 是一种双向通信协议,不受同源策略的限制。通过建立 WebSocket 连接,客户端和服务端可以实现实时的双向通信。
    • 例子: 在客户端和服务端建立 WebSocket 连接。

选择使用哪种跨域方案通常取决于具体的需求和环境。CORS 是一种标准的、现代的解决方案,而 JSONP 通常用于兼容较老的浏览器。代理、WebSocket 等方式也可以根据实际情况选择。

相关推荐
GreenTea1 小时前
GrokBot 核心成员 Lauren Tan:每月交付 2000 个 PR 的人,是怎么用 AI 的
前端·后端·架构
码事漫谈1 小时前
FDE:一个缩写,两种命运
后端
名字还没想好☜2 小时前
Go context.AfterFunc 实战(Go 1.21):context 一取消就自动跑清理,告别手写 goroutine 监听 Done
后端·golang·go
明月_清风3 小时前
为什么最近开始关注 JEV?几个实战案例告诉你答案
人工智能·后端
GetcharZp4 小时前
5 分钟拥有自己的 S3:RustFS 上手(MinIO 的 Rust 替代,Apache 2.0 可商用)
后端
行百里er5 小时前
Redis 版本演进、新特性与协议那些事儿
redis·后端
Joy T5 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
打工仔折腾 AI6 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn
IT_陈寒6 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端