• 本地跑项目解决跨域问题


    跨域问题:

    指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对 javascript 施加的安全限制。

    同源策略:

    是指协议(protocol)、域名(host)、端口号(port),都必须相同,其中一个不同都会产生跨域。

    www.test.com:8000 协议(http)、主域名(test)、子域名(www)、端口号(8000)

    非同源限制

    无法读取非同源网页的cookie、localStorage、IndexedDB

    无法接触非同源网页的DOM

    无法向非同源地址发送 AJAX 请求

    方法一:配置代理

    nginx配置代理

    前端端口4200,后端端口8083,统一在代理中配置一个监听端口

    1. server {
    2. listen 80;
    3. location / {
    4. proxy_set_header Host $host;
    5. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    6. proxy_pass http://localhost:4200;
    7. add_header Access-Control-Allow-Origin *;
    8. proxy_set_header X-Real-IP $remote_addr;
    9. proxy_set_header X-NginX-Proxy true;
    10. }
    11. location /api/ {
    12. proxy_pass http://localhost:8083;
    13. proxy_set_header Host $host;
    14. proxy_set_header X-Real-IP $remote_addr;
    15. # 添加允许跨域的配置
    16. add_header Access-Control-Allow-Origin *;
    17. add_header Access-Control-Allow-Credentials true;
    18. add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
    19. add_header Access-Control-Allow-Headers X-Requested-With,Content-Type,Content-Length,Accept,Authorization;
    20. }
    21. }

    方法二:后端配置

    写一个关于跨域的配置类CorsConfig

    1. @Configuration // 一定不能忽略此注解
    2. public class CorsConfig {
    3. @Bean
    4. public CorsFilter corsFilter() {
    5. // 1.创建 CORS 配置对象
    6. CorsConfiguration config = new CorsConfiguration();
    7. // 支持域
    8. config.addAllowedOrigin("*");
    9. // 是否发送 Cookie
    10. config.setAllowCredentials(true);
    11. // 支持请求方式
    12. config.addAllowedMethod("*");
    13. // 允许的原始请求头部信息
    14. config.addAllowedHeader("*");
    15. // 2.添加地址映射
    16. UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
    17. corsConfigurationSource.registerCorsConfiguration("/**", config);
    18. // 3.返回 CorsFilter 对象
    19. return new CorsFilter(corsConfigurationSource);
    20. }
    21. }

  • 相关阅读:
    MyBatis基于XML的详细使用-参数、返回结果 处理
    LoRA 是如何工作的?
    如何解决ViewFlipper的onClick和onTouch的冲突事件
    python之列表介绍
    【车间调度】基于粒子群算法求解生产调度问题附matlab代码
    Android akptool 安装 mac 电脑
    详细设计(软件项目)
    在windows操作系统上安装MariaDB
    华为云云耀云服务器L实例评测|部署前后端分离项目
    Python基础学习:字符串分割方法详解
  • 原文地址:https://blog.csdn.net/weixin_44680802/article/details/134382323