精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

瞧瞧別人家的跨域方案,那叫一個優雅!

開發 后端
很多小伙伴第一次遇到跨域問題,大概率會一臉懵逼:“我后端接口明明通了,Postman也能調,為啥瀏覽器就報紅字?”

1 什么是跨域問題?

很多小伙伴第一次遇到跨域問題,大概率會一臉懵逼:“我后端接口明明通了,Postman也能調,為啥瀏覽器就報紅字?”

圖片圖片

其實這事兒得怪瀏覽器的“同源策略”(Same-Origin Policy)。

簡單說,瀏覽器覺得“不同源的請求都是耍流氓”。

比如你的前端跑在http://localhost:8080。

而后端在https://api.xxx.com:8000。

只要協議域名端口任何一個不同,就會被瀏覽器直接掐斷。

舉個栗子??:

// 前端代碼(http://localhost:8080)
fetch('http://api.xxx.com:8000/user')
  .then(res => res.json())
  .then(data => console.log(data));  
// 瀏覽器控制臺報錯:  
// Access to fetch from 'http://localhost:8080' has been blocked by CORS policy...

這時候,你就需要“跨域解決方案”來幫瀏覽器松綁了!

那么,如何解決跨域問題呢?

2 解決跨域問題的方案

2.1 CORS(跨域資源共享)

適用場景:前后端分離項目、接口需要兼容多種客戶端。

CORS是W3C標準,后端只需在響應頭里加幾個字段,告訴瀏覽器“這個接口我允許誰訪問”。

后端代碼示例(Spring Boot版):

// 方法1:直接懟注解(適合單個接口)
@CrossOrigin(origins = "http://localhost:8080")
@GetMapping("/user")
public User getUser() { ... }

// 方法2:全局配置(一勞永逸)
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:8080")
                .allowedMethods("*")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600);
    }
}

關鍵響應頭:

  • Access-Control-Allow-Origin: http://localhost:8080(允許的源)
  • Access-Control-Allow-Methods: GET,POST(允許的方法)
  • Access-Control-Allow-Credentials: true(允許帶Cookie)

注意坑點:

  • 如果用了allowCredentials(true)allowedOrigins不能為*(必須明確指定域名)。
  • 復雜請求(比如Content-Type是application/json)會先發一個OPTIONS預檢請求,記得處理!

2.2 JSONP

適用場景:老項目兼容、只支持GET請求(比如調用第三方地圖API)。

JSONP利用**<script>標簽沒有跨域限制**的特性,讓后端返回一段JS代碼。

前端代碼:

function handleUserData(data) {
    console.log("收到數據:", data);
}

// 動態創建script標簽
const script = document.createElement('script');
script.src = 'http://api.xxx.com:8000/user?callback=handleUserData';
document.body.appendChild(script);

后端代碼:

@GetMapping("/user")
public String jsonp(@RequestParam String callback) {
    User user = new User("Tony", 30);
    // 把數據包進回調函數里
    return callback + "(" + new Gson().toJson(user) + ")";
}

輸出結果:

handleUserData({"name":"Tony","age":30})

缺點:

  • 只支持GET(傳參長度有限)。
  • 容易被XSS攻擊(畢竟得信任第三方腳本)。

2.3 Nginx反向代理

適用場景:生產環境部署、微服務網關統一處理。

直接把跨域問題甩給Nginx,讓瀏覽器以為所有請求都是同源的。

Nginx配置示例:

server {
    listen 80;
    server_name localhost;

    location /api {
        # 轉發到真實后端
        proxy_pass http://api.xxx.com:8000;
        # 解決跨域
        add_header 'Access-Control-Allow-Origin' 'http://localhost:8080';
        add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'Content-Type';
    }
}

此時前端請求地址改成同源:

fetch('/api/user')  // 實際訪問 http://localhost/api/user → 被Nginx轉發

優點:

  • 前后端代碼零侵入。
  • 能隱藏真實接口地址(安全加分)。

2.4 網關層統一處理

適用場景:Spring Cloud Gateway、Kong等API網關。

和Nginx思路類似,但更適合微服務場景,直接在網關層加CORS配置。

Spring Cloud Gateway配置:

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
            allowed-origins: "http://localhost:8080"
            allowed-methods: "*"
            allowed-headers: "*"
            allow-credentials: true

2.5 WebSocket

適用場景:實時通信需求(聊天室、股票行情)。

WebSocket協議沒有跨域限制(因為握手階段走HTTP,后續升級為長連接)。

前端代碼:

const socket = new WebSocket('ws://api.xxx.com:8000/ws');
socket.onmessage = (event) => {
    console.log('收到消息:', event.data);
};

后端代碼(Spring Boot):

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new MyWebSocketHandler(), "/ws");
    }
}

2.6 PostMessage

適用場景:頁面與iframe、彈窗之間的跨域通信。

通過window.postMessage實現不同窗口間的數據傳遞。

父頁面(http://parent.com):

const childWindow = window.open('http://child.com');
childWindow.postMessage('我是你爹', 'http://child.com');

子頁面(http://child.com):

window.addEventListener('message', (event) => {
    if (event.origin !== 'http://parent.com') return; // 驗證來源
    console.log('收到爹的消息:', event.data);
});

總結

  • 簡單粗暴:開發環境用CORS注解。
  • 生產環境:優先Nginx/網關統一處理,避免每個服務配一遍。
  • 老項目兼容:JSONP勉強能用,但別長期依賴。
  • 實時場景:直接上WebSocket,順便解決通信問題。
  • 安全第一:Access-Control-Allow-Origin盡量別寫*,白名單要用精確域名。

最后提醒溫馨提醒一下:跨域問題本質是瀏覽器行為,和HTTP協議無關。

如果你用Postman,發送curl請求,測試沒問題,但瀏覽器報錯,別懷疑人生,這可能是前端的鍋!


責任編輯:武曉燕 來源: 蘇三說技術
相關推薦

2025-05-30 08:20:54

2024-11-12 08:20:31

2025-04-08 08:20:33

2024-10-24 08:21:33

2024-12-02 00:59:30

Spring

2025-03-06 08:21:02

判空entity對象

2025-04-22 08:20:51

2022-12-12 08:14:47

2025-07-14 00:00:00

接口重試MQTT冪等性

2025-03-11 08:20:58

2025-08-19 10:01:43

2020-11-03 16:00:33

API接口微服務框架編程語言

2017-11-12 21:32:52

戴爾

2015-09-24 09:22:16

nodejs頁面始末

2016-01-08 09:49:19

DockerDocker案例云應用開發

2020-11-17 09:34:31

API接口后端

2017-09-22 13:22:59

大數據南京大學宿舍

2023-12-30 20:04:51

MyBatis框架數據

2021-07-14 06:31:08

京東互聯網加薪

2021-01-20 05:42:27

RabbitMQMQ vhost
點贊
收藏

51CTO技術棧公眾號

免费一级欧美在线观看视频| 男人的天堂在线免费视频| 欧美fxxxxxx另类| 亚洲成人久久网| 男人天堂成人在线| www.欧美日本韩国| 91在线免费视频观看| 国产精品香蕉国产| 久久久一区二区三区四区| 国产精品日韩精品中文字幕| 欧美成人激情免费网| 日韩欧美黄色大片| а_天堂中文在线| 国产精品视频第一区| 精品国产第一页| 一二三区中文字幕| 美日韩精品视频| 久久久久久久久久久人体| 国产jk精品白丝av在线观看| 51精品国产| 欧美亚洲综合网| 丰满少妇久久久| 黄色在线视频网站| 久久久.com| 2020国产精品久久精品不卡| 蜜臀99久久精品久久久久小说| 黄色成人av网站| 色七七影院综合| 日韩乱码人妻无码中文字幕久久| 欧美第一在线视频| 欧美精品在线观看一区二区| 免费欧美一级视频| 91福利在线尤物| 一区二区三区在线看| 亚洲女人av| 免费看a在线观看| 亚洲午夜久久久久久尤物 | 91色综合久久久久婷婷| 成人有码在线播放| 中文字幕精品一区二区精| 久久视频一区| 日本sm极度另类视频| www日韩精品| 91久久视频| 久久久噜噜噜久久| 国产一级av毛片| 国产一区二区三区四区三区四 | avtt天堂在线| 在线成人激情| 久久91亚洲精品中文字幕| 粉嫩av性色av蜜臀av网站| 久久资源中文字幕| 久久精品精品电影网| 黄色裸体一级片| 日韩国产一区二区| 日韩在线视频网站| 亚洲区一区二区三| 91精品国偷自产在线电影| 久久精品电影网站| 人妻少妇精品一区二区三区| 国产一区亚洲| 久久久欧美精品| 在线观看黄网站| 久久久国产精品一区二区中文| 国产成人亚洲精品| 888奇米影视| 国产成人免费视频网站高清观看视频| 动漫一区二区在线| 深夜影院在线观看| 国产清纯白嫩初高生在线观看91 | 男人天堂2024| 日韩精彩视频在线观看| 国产色婷婷国产综合在线理论片a| 一级黄色片视频| 国产福利91精品| 精品无人乱码一区二区三区的优势| 男人天堂网在线观看| 国产精品久久久久影院色老大| 99re99热| 秋霞伦理一区| 欧美精品在线观看一区二区| 逼特逼视频在线观看| 亚洲人成网77777色在线播放| 一本色道久久88亚洲综合88| 日韩欧美123区| 国产欧美一级| 91精品久久久久久久久久另类| 亚洲av无码乱码国产精品久久| 91婷婷韩国欧美一区二区| 亚洲国产日韩综合一区| 五月婷婷视频在线观看| 欧美午夜片欧美片在线观看| 色91精品久久久久久久久| 粉嫩一区二区三区四区公司1| 一区二区在线视频播放| 久久久久免费看| 丝瓜av网站精品一区二区| 亚洲综合第一页| 久久天堂电影| 亚洲综合清纯丝袜自拍| 国产又猛又黄的视频| 麻豆一区在线| 中文字幕精品av| 国产成人一区二区三区影院在线| 精品一区二区三区在线视频| 久久精品国产99精品国产亚洲性色| 免费黄色在线观看| 色婷婷久久久亚洲一区二区三区| 91精产国品一二三| 成人情趣视频网站| 1769国产精品| 成人激情四射网| 国产精品视频第一区| av之家在线观看| 涩爱av色老久久精品偷偷鲁| 一区二区三区视频免费| 国产一区二区99| 高清不卡在线观看av| 一区二区三区四区免费视频| 久久爱91午夜羞羞| 亚洲成人aaa| 久操免费在线视频| 国模无码大尺度一区二区三区| 欧美最大成人综合网| av免费在线视| 欧美mv日韩mv亚洲| 亚洲国产精品免费在线观看| 麻豆精品国产传媒mv男同| 欧美激情视频一区二区三区| av免费不卡| 欧美大黄免费观看| 亚洲熟女www一区二区三区| 蜜臀久久久久久久| 亚洲欧美国产不卡| 亚洲爱爱视频| 在线免费观看羞羞视频一区二区| 国产伦精品一区二区三区视频网站| 播五月开心婷婷综合| 日韩亚洲欧美一区二区| www一区二区三区| 中文字幕亚洲情99在线| 做爰无遮挡三级| 日本一区二区三区在线不卡| 天天爱天天操天天干| 欧美丰满老妇| 成人av色在线观看| 中文字幕伦理免费在线视频 | 欧美日韩大陆在线| 日本成人免费在线观看 | 美女流白浆视频| 黑人一区二区三区四区五区| 国产欧美丝袜| 日韩伦理在线一区| 国产亚洲免费的视频看| 亚洲精品一区二区二区| 国产精品另类一区| 亚洲在线观看网站| 伊人激情综合| 免费看国产精品一二区视频| 91天天综合| 久久综合88中文色鬼| 午夜精品久久久久久久91蜜桃| 亚洲成av人片在线观看无码| 中文字幕丰满孑伦无码专区| 视频精品一区二区| 中文字幕一区二区中文字幕| 日本高清久久| 欧美一级电影久久| av播放在线| 日韩亚洲国产中文字幕欧美| 日本五十熟hd丰满| 国产亚洲美州欧州综合国| 69久久久久久| 欧美成人亚洲| 欧美二区在线看| 啪啪av大全导航福利综合导航| 欧美另类高清videos| 香蕉视频成人在线| 欧美色网一区二区| 国产高清在线免费观看| 久久众筹精品私拍模特| 欧美午夜精品理论片| 亚洲日本成人| 亚洲一二三区精品| 国产精品天天看天天狠| 国产精品欧美日韩久久| 国产在线拍揄自揄拍视频| 国产午夜精品一区二区三区| 国产日本精品视频| 色婷婷久久一区二区三区麻豆| 日韩精品一区二区亚洲av性色| 99精品国产视频| 亚洲激情在线看| 美女久久一区| 国产一级做a爰片久久毛片男| 免费毛片在线不卡| av蓝导航精品导航| 日韩三区在线| 久久久噜久噜久久综合| 麻豆影院在线| 亚洲人成啪啪网站| 刘玥91精选国产在线观看| 欧美性受xxxx黑人xyx性爽| 国产精品成人aaaa在线| 中文字幕一区二区在线观看| 中文字幕一区二区三区人妻电影| 国产99久久精品| 日韩在线不卡一区| 玖玖国产精品视频| 日韩av高清在线看片| 亚洲激情久久| 亚洲人一区二区| 免费黄色成人| 麻豆传媒一区二区| 91蝌蚪精品视频| 亚洲自拍偷拍视频| 亚洲免费资源| 国产伊人精品在线| 久久久成人av毛片免费观看| 5278欧美一区二区三区| 男插女视频久久久| 欧美成人黄色小视频| 午夜国产福利在线| 影音先锋日韩有码| 成人av毛片| 亚洲午夜小视频| 蜜桃成人在线视频| 亚洲欧美日韩成人| 色网站在线免费观看| 日韩激情视频在线播放| 五月天婷婷社区| 亚洲国产精彩中文乱码av| 好男人www在线视频| 精品国产成人系列| 亚洲精品无遮挡| 精品少妇一区二区三区免费观看 | 91精品店在线| 国产精品入口日韩视频大尺度| 成人自拍视频网| 国产九九精品视频| 24小时成人在线视频| 成人国产精品一区| 精品视频在线播放一区二区三区| 成人美女av在线直播| 欧美影院在线| 粉嫩精品一区二区三区在线观看| 综合久久成人| 国产精品一区二区av| 欧美freesex8一10精品| 精品欧美一区二区久久久伦| 欧洲精品一区| 日本欧洲国产一区二区| 精品久久久久中文字幕小说 | 亚洲网站啪啪| 免费看黄在线看| 香蕉视频成人在线观看| 久久久久久久少妇| 美女网站一区二区| 少妇愉情理伦片bd| 99视频精品免费视频| 大又大又粗又硬又爽少妇毛片 | 在线视频精品一区| 自拍日韩欧美| 玩弄中年熟妇正在播放| 美女91精品| 亚洲一区二区福利视频| 国产成人av电影在线| 日本免费福利视频| 欧美国产精品一区二区三区| 欧美性x x x| 午夜精品一区二区三区免费视频| 欧美一级淫片免费视频黄| 欧美日韩久久久久久| 亚洲第一页视频| 亚洲区中文字幕| 精产国品自在线www| 国产69精品久久久久99| 成人视屏在线观看| 97人人模人人爽视频一区二区| 欧美精品中文| 一区二区精品在线| 伊人影院久久| 久久久精品麻豆| 成人一级视频在线观看| 微拍福利一区二区| 亚洲影院在线观看| 欧美日韩a v| 欧美第一区第二区| 国产乱理伦片a级在线观看| 欧美成人久久久| 奇米777日韩| 高清视频一区二区三区| av中文一区| 日韩精品在线中文字幕| 麻豆精品视频在线观看视频| 亚洲精品第二页| 国产精品国产三级国产a| 色婷婷av国产精品| 欧美一卡二卡在线观看| www.成人.com| 91高清免费视频| 日韩亚洲精品在线观看| 台湾成人av| 一区二区三区福利| 一级黄色大片免费看| 中文字幕一区二区三区视频| aaaaaa毛片| 欧美精品一区二区精品网| 久久精品视频观看| 国产精品久久久久久久久粉嫩av| 国产主播性色av福利精品一区| 国产四区在线观看| 蜜乳av一区二区| 91精品人妻一区二区三区| 亚洲午夜久久久久中文字幕久| 国产又粗又猛视频免费| 亚洲色图综合网| 中文字幕在线看片| 精品久久蜜桃| 亚洲精品影院在线观看| 中文字幕无人区二| 怡红院av一区二区三区| 国产精品久久久久久久成人午夜| 国产一区二区三区在线观看视频 | 美国一级片在线观看| 一本大道久久a久久综合| 午夜视频免费看| 欧美激情亚洲精品| 亚洲视频精选| 免费看日b视频| 国产很黄免费观看久久| 永久久久久久久| 91精品国产综合久久久久| 男人影院在线观看| 成人国产精品久久久久久亚洲| 日韩欧美精品综合| 中文字幕永久有效| 国产精品系列在线| 影音先锋国产在线| 精品国偷自产在线视频| 婷婷久久免费视频| 男人天堂成人网| 国产精品888| 国产亚洲第一页| 亚洲韩国青草视频| 涩涩视频网站在线观看| 日本不卡一区| 免费成人在线观看| 国产麻豆视频在线观看| 日韩三级精品电影久久久| 国产探花在线观看| 狠狠色综合网站久久久久久久| 国产精品入口66mio| 在线免费看黄视频| 欧美丝袜自拍制服另类| 日本在线看片免费人成视1000| 成人在线小视频| 国内揄拍国内精品久久| 水蜜桃av无码| 日本韩国欧美国产| 老司机精品视频在线观看6| 亚洲自拍偷拍在线| 99精品国产在热久久婷婷| 亚洲午夜福利在线观看| 欧美体内she精视频| 国产激情在线视频| 国产日韩久久| 日韩成人免费电影| 国产午夜精品理论片在线| 精品久久国产字幕高潮| 台湾佬中文娱乐久久久| 国产精品av免费| 成人黄色大片在线观看| 日韩综合在线观看| 欧美巨猛xxxx猛交黑人97人| 欧美a大片欧美片| 岛国毛片在线播放| 亚洲福利一区二区| 国产小视频福利在线| 亚洲一区二区三区在线视频 | 香蕉av一区二区| 欧美xxxxx精品| 欧美日韩中文字幕精品| 欧美寡妇性猛交xxx免费| 秋霞久久久久久一区二区| 国产一区二区美女诱惑| 日本韩国欧美中文字幕| 日韩亚洲第一页| 日本欧美韩国国产| 午夜免费一级片| 日韩欧美一区二区三区| 久操视频在线| 欧美日韩免费高清| 国产高清精品在线| 中文字幕视频一区二区| 久久久久久成人精品| 欧美成人精品一区二区三区在线看| 国产伦精品一区二区三区88av| 欧美日韩视频专区在线播放| 美女av在线免费看|