QUIC & HTTP/3 Support:主流瀏覽器和服務端對 HTTP/3 的支持情況(2021年12月更新)


請訪問原文鏈接:https://sysin.cn/blog/quic-http3-support/,查看最新版。原創作品,轉載請保留出處。

作者:gc(at)sysin.org,主頁:www.sysin.cn

HTTP/3

1. 相關概念

1.1 TLSv1.3

TLS 1.3 由 IETF 於 2018 年 8 月正式發布。

SSL 即 Secure Sockets Layer 安全套接字層。TLS 即 Transport Layer Security,傳輸層安全。TLS 是 IETF 在 SSL3.0 基礎上設計的協議,實際上相當於 SSL 的后續版本。

TLS(Transport Layer Security)是一種加密協議,旨在通過 IP 網絡提供安全通信。它是當今非常常見的協議,用於保護 Web 瀏覽器和 Web 服務器之間的 HTTP 通信。當使用 TLS 保護 HTTP 時,它通常被稱為 HTTPS(HTTP Secure)。TLS/SSL 是安全傳輸層協議,是介於 TCP 和 HTTP 之間的一層安全協議,不影響原有的 TCP 協議和 HTTP 協議。

TLS 1.3 是時隔九年對 TLS 1.2 等之前版本的新升級,也是迄今為止改動最大的一次。針對目前已知的安全威脅,IETF(Internet Engineering Task Force,互聯網工程任務組)制定 TLS 1.3 的新標准,使其有望成為有史以來最安全,但也最復雜的 TLS 協議。

1.2 OpenSSL 3.0

OpenSSL 項目開發和維護 OpenSSL 軟件 - 一個強大的、商業級的、功能齊全的工具包,用於通用密碼學和安全通信。OpenSSL 是 TLS/SSL 協議的開源實現,提供開發庫和命令行程序。OpenSSL 使用 C 語言作為開發語言,擁有良好的跨平台性能,支持 Linux、Windows、BSD、Mac、VMS 等多個平台使用。

OpenSSL 3.0 是 OpenSSL 1.1.1 之后的重大更新版本,OpenSSL 3.0 是一個主要版本,並且不完全向后兼容以前的版本。大多數應用程序與 OpenSSL 1.1.1 一起工作仍將保持不變,只需要重新編譯(盡管您可能會看到許多關於使用的編譯警告已棄用的 API)。某些應用程序可能需要進行更改才能編譯和工作正確,並且需要更改許多應用程序以避免棄用警告。我們整理了一個 遷移指南 描述 OpenSSL 3.0 與以前版本相比的主要區別。

OpenSSL 3.0 引入了許多新概念,應用程序開發人員和 OpenSSL 的用戶應該知道。有關 libcrypto 關鍵概念的概述可在 libcrypto 手冊頁中查看。

OpenSSL 3.0 的一個關鍵特性是新的 FIPS 模塊。我們的實驗室正在測試模塊並立即整理我們 FIPS 140-2 驗證的文書工作。我們預計將在本月(2021 年 9 月)晚些時候提交。最終證書不是預計明年發布。

1.3 LibresSSL 是什么

LibreSSLOpenBSD 開發者在 OpenSSL 爆出心臟出血漏洞之后 fork 的一個分支,旨在提供一個比 OpenSSL 更安全的替代品。它的 收藏夾圖標(favicon) 就是 OpenSSL 心臟出血漏洞的圖標。OpenBSD 是一個以安全著稱的操作系統,LibreSSL 遵循其他 OpenBSD 項目的安全指導原則。

LibreSSL 與 OpenSSL 都是傳輸層安全(TLS,Transport Layer Security)協議的開源實現,如需了解 TLS 可參見其 維基詞條 或自行搜索。

字面上看,LibreSSL 有兩種斷詞方式:

  • Libre-SSL,Libre 來自拉丁語,意為 “自由”,大家應該並不陌生,因為 LibreOffice 已經事實上取代了 OpenOffice,沒准 LibreSSL 也會有這一天。
  • Lib-Re-SSL,即重新實現的 libssl。

有些發行版已經將原有的 OpenSSL 替換為 LibreSSL 了,知名的有:

1.4 什么是 QUIC

主頁:https://www.chromium.org/quic

描述:QUIC, a multiplexed transport over UDP(QUIC,一種基於 UDP 的多路傳輸)

QUIC 是一種建立在 UDP 之上的新型多路復用傳輸。HTTP/3 旨在利用 QUIC 的功能,包括缺少流之間的 Head-Of-Line 阻塞。

QUIC 項目最初是作為 TCP+TLS+HTTP/2 的替代方案,旨在改善用戶體驗,尤其是頁面加載時間。IETF QUIC 工作組明確定義了傳輸QUIC) 和應用 (HTTP/3) 層之間的邊界。並從 QUIC Crypto 遷移到 TLS 1.3

由於 TCP 是在操作系統內核和中間件中實現的,因此幾乎不可能對 TCP 進行重大更改。然而,由於 QUIC 建立在 UDP 之上,並且傳輸功能是加密的,因此它沒有這樣的限制。

QUIC 和 HTTP/3 over TCP+TLS 和 HTTP/2 的主要特性包括:

  • 減少連接建立時間 - 一般情況下往返 0 次
  • 改進的擁塞控制反饋
  • 沒有線頭阻塞的多路復用
  • 連接移植
  • 傳輸可擴展性
  • 可選的不可靠交付

相關 IETF 文件:

1.5 了解 HTTP/3

運行在 QUIC 之上的 HTTP 協議被稱為 HTTP/3 (HTTP-over-QUIC)。QUIC 協議 (Quick UDP Internet Connection) 基於 UDP,正是看中了 UDP 的速度與效率。同時 QUIC 也整合了 TCP、TLS 和 HTTP/2 的優點,並加以優化。

  • 特點:

    • 減少了握手的延遲 (1-RTT 或 0-RTT)
    • 多路復用,並且沒有 TCP 的阻塞問題
    • 連接遷移,(主要是在客戶端) 當由 Wifi 轉移到 4G 時,連接不會被斷開
    • 集成了 TLS 1.3 加密
  • HTTP/3 與 HTTP/1.1 和 HTTP/2 沒有直接的關系,也不是 HTTP/2 的擴展

  • HTTP/3 將會是一個全新的 WEB 協議

  • HTTP/3 目前處於制訂和測試階段

1.6 總結

QUIC 是傳輸層協議,基於 UDP(對比的概念是 TCP),HTTP/3 是應用層協議,同協議層的概念是 FTP、SMTP、DNS 等等。

HTTP/3 默認使用 TLSv1.3 在 QUIC 傳輸層加密,而 OpenSSL 是實現 TLSv1.3 的一種開源軟件和工具。

通過以下服務端軟件將最終交付 HTTP/3(QUIC、TLSv1.3)給客戶端,最終用戶通過瀏覽器客戶端(Firefox、Chrome、Safari 等)訪問獲得高效快速的互聯網體驗。

2. 服務端

2.1 F5 BIG-IP HTTP/3

官方參考:

從 BIG-IP 15.1.0.1 開始,F5 引入了 HTTP/3 和 QUIC 作為實驗特性。BIG-IP 系統的中 HTTP/3 和 QUIC profiles 分別基於 draft-ietf-quic-http-24draft-ietf-quic-transport-24 實驗性實現。

HTTP/3 是 HTTP/2 之后的下一個 HTTP 協議版本。與早期版本不同,HTTP/3 不使用 TCP,而是依賴 QUIC 作為 UDP 協議之上的底層傳輸協議。因此,QUIC 可以被視為提供了先前由 TCP、TLS 和 HTTP/2 提供的功能。

使用 TMUI 創建 HTTP/3 virtual server

具體步驟如下:

  1. Log in to the Configuration utility.

  2. Go to Local Traffic > Virtual Servers.

  3. Select Create.

  4. Provide appropriate values for Name, Destination Address/Mask.

  5. For Service Port, enter an appropriate port number. For example, 4433.

  6. For Protocol , select UDP . Note: HTTP/3 and QUIC use the UDP protocol. By selecting UDP, options for HTTP/3 and QUIC profiles will be available for selection in the Acceleration section of the page.

  7. For Protocol Profile (Server) , select tcp . Note: As HTTP/3 server side is currently not supported, you cannot use any of the UDP protocols on the server side.

  8. For HTTP Profile (Client), select http.

  9. For SSL Profile (Client), select clientssl-quic.

  10. For SSL Profile (Server), select an appropriate Server SSL profile to communicate with your pool member.

  11. Optional: For Source Address Translation, select Auto Map.

  12. Select the HTTP MRF Router check box.

  13. For QUIC Profile (experimental) , select quic.
    Note: To create your own QUIC profile, go to Local Traffic > Profiles > Services > QUIC (experimental) and select Create.

  14. For HTTP/3 Profile (experimental) , select http3.
    Note: To create your own HTTP/3 profile, go to Local Traffic > Profiles > Services > HTTP/3 (experimental) and select Create.

  15. Under Default Pool, select your pool.

  16. Select Finished.

使用 tmsh 創建 HTTP/3 virtual server

具體步驟如下:

  1. Log in to the TMOS Shell (tmsh) by entering the following command: tmsh

  2. To create an HTTP/3 virtual server, use the following command syntax:

    create ltm virtual <vs_name> ip-protocol udp destination <ipaddress>:<port_number> pool <pool_name> source-address-translation {type <type>} profiles add { udp { context clientside } tcp { context serverside } <clientssl_profile> { context clientside } <serverssl_profile> {context serverside } <quic_profile> { context clientside } <http3_profile> { context clientside } <http_profile> httprouter }
    

    For example, enter the following command to create an HTTP/3 virtual server that contains the attributes in the table that follows:

    create ltm virtual quic_vs ip-protocol udp destination 10.10.10.10:4433 pool example_pool source-address-translation {type automap} profiles add { udp { context clientside } tcp { context serverside } clientssl-quic { context clientside } serverssl {context serverside } quic { context clientside } http3 { context clientside } http httprouter }
    
    Option Value
    Virtual Server name quic_vs
    Destination Address/Mask 10.10.10.10
    Service Port 4433
    Protocol UDP
    Protocol Profile (Client) udp
    Protocol Profile (Server) tcp
    HTTP Profile http
    SSL Profile (Client) clientssl-quic
    SSL Profile (Server) serverssl
    Source Address Translation Auto Map
    HTTP MRF Router Enabled
    QUIC Profile (experimental) quic
    HTTP/3 Profile (experimental) http3
    Pool example_pool

2.2 Nginx HTTP/3

技術預覽

參考:Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3

2020 年 6 月 10 日,NGINX 宣布了 NGINX 的官方 QUIC 和 HTTP/3 實現的初始版本,即 http_v3_module。這是一個技術預覽,應該被視為實驗性的 - 它不適用於生產環境。在編寫本文時,QUIC 標准 尚未定稿,並且此初始版本是針對當前草案的一個子集實現的。

經過幾個月的設計和開發,http_v3_module 已經准備好進行互操作性測試。我們也歡迎一般的反饋和代碼貢獻。請注意,http_v3_module 在 NGINX 開源主線開發分支中不可用(也不是 NGINX Plus 的任何版本);因為它仍處於試驗階段,所以它是一個獨立的開發分支,位於 https://hg.nginx.org/nginx-quic

還請注意,這個 QUIC + HTTP/3 的實現是全新的,與 Cloudflare 作為其 quiche 項目 的一部分提供的修補程序無關。

對於那些熟悉 NGINX 配置的人來說,啟用 QUIC + HTTP/3 非常簡單。

server {
    listen 443 ssl;              # TCP listener for HTTP/1.1
    listen 443 http3 reuseport;  # UDP listener for QUIC+HTTP/3

    ssl_protocols       TLSv1.3; # QUIC requires TLS 1.3
    ssl_certificate     ssl/www.example.com.crt;
    ssl_certificate_key ssl/www.example.com.key;

    add_header Alt-Svc 'quic=":443"'; # Advertise that QUIC is available
    add_header QUIC-Status $quic;     # Sent when QUIC was used
}

quiche:Cloudflare NGINX Build

早在 2018 年,Cloudflare 已經實驗性的支持 QUIC 和 HTTP/3,只需要在控制台點擊一個按鈕即可啟用,后來發布了一個可以本地部署的 nginx build,詳見:Experiment with HTTP/3 using NGINX and quiche

正式版(待發布)

預計在 2021 年底合並 nginx-quic development branch 到 NGINX mainline branch,並優化性能。參看:Our Roadmap for QUIC and HTTP/3 Support in NGINX

有可能是 nginx 1.22 stable version?

2.3 Microsoft MsQuic

Windows Server 2022 和 Windows 11 中的 QUIC 已經可用。

2021 年 8 月發布的 Windows Server 2022 和 2021 年 10 月發布的 Windows 11,已經支持 QUIC,在 IIS 中新建站點時將默認啟用。

項目主頁:microsoft/msquic

Microsoft 正在開發開源的 QUIC library,叫做 MsQuic, 在 GitHub 基於 MIT license. MsQuic 是一個跨平台的通用庫,它實現了 QUIC 傳輸協議。QUIC 正在由 互聯網工程工作組(IETF)制定標准。MsQuic 是一個針對多種使用模式優化的客戶機和服務器解決方案,並被多個 Microsoft 產品和服務使用。MsQuic 目前處於預覽階段,支持 Windows 和 Linux。

Microsoft 早期在最新的 Windows Insider Preview Builds 中支持 QUIC 和 HTTP/3,並將其開源,名為 MsQuic。終於在 2021 年 8 月發布的 Windows Server 2022 中集成了 MsQuic v1.0 (LTSC)。

在 Windows 上,MsQuic 依賴於 Schannel 對於 TLS 1.3 功能的內置支持。MsQuic 以 msquic.sys 驅動程序的方式封裝在 Windows 內核之中,以支持內置的 HTTP 和 SMB 功能。用戶模式應用程序使用 msquic.dll(從這里構建)並將其與他們的應用程序打包。

MsQuic v1.0 (LTSC)

MsQuic v1.0 是第一個官方支持的版本。此版本的主要交付產品是 Windows Server 2022 版本。目前沒有正式的、已簽名的二進制文件計划發布。Linux 支持被視為此版本的預覽版。QUIC 規范目前 “提交給 IESG 發布”,因此此版本支持 v1 和草案 29 版本。

Important 未完全實現的 QUIC 協議功能:

  • 0-RTT
  • Client-side Migration
  • Server Preferred Address
  • Path MTU Discovery

已知問題:

  • GetParam for QUIC_PARAM_CONN_STATISTICS does not populate Handshake.* fields.

配置選項

以下是在 Windows Insider Build 20175 中的 IIS 綁定一個 HTTPS 站點的截圖,可以看到如同 HTTP/2 的設置,TLS 1.3 和 QUIC 默認將啟用,除非手動勾選禁用。

windows-2022-iis

2.4 Apache httpd

暫時沒有 Apache httpd 支持 HTTP/3 的消息。Apache 目前還沒有承諾何時進行相關的支持工作。(筆者無法查詢到相關資料,僅供參考。)

LiteSpeed Web Server 是 Apache 的替代品。它可以直接加載 Apache 配置文件,並與所有最流行的控制面板集成。眾所周知,LSWS 可以在不犧牲性能的情況下節省資源。由於 LiteSpeed Web Server 取代了 Apache 的所有功能,它簡化了使用,並使向新服務器的過渡變得輕松方便。

參看 Enable or Disable QUIC and HTTP/3

請注意:LiteSpeed Web Server 是商業軟件,免費許可有明顯限制,無法簡單用來替代 apache httpd。

2.5 HAProxy

2021.11.23,HAProxy 2.5 early support for QUIC and HTTP/3。

您可以接收 HTTP/3 請求,並在您的 HAProxy 實例上處理它們或將它們轉發到 HTTP/1、HTTP/2 或 FastCGI 后端服務器。

該功能處於預實驗階段,僅用於開發。錯誤處理仍然非常有限。

您可以 構建具有 QUIC 支持 的 HAProxy 使用,以了解該功能的內部工作原理,並且使用 QUICTLS SSL 庫替代 OpenSSL。

2.6 Tomcat

暫無相關消息

2.7 Varnish

測試中,參看:QUIC visions of OSI

GitHub: vtest/VTest

2.8 小結

2021 年底了,正式支持 QUIC 和 HTTP/3 的只有 F5 和 Microsoft 兩家的商業產品,比較遺憾,開源產品都無法友好支持。

3. 客戶端

Browser Version implemented (disabled by default) Date Version shipped (enabled by default) Date
Chrome Stable build (79) December 2019 87 April 2020
Firefox Stable build (72.0.1) January 2020 88 April 2021
Safari Safari Technology Preview 104 April 2020 N/A N/A
Edge N/A N/A 87 April 2020

As of April 2021, the HTTP/3 protocol is an Internet Draft and has multiple implementations. Google Chrome supports HTTP/3 by default since April 2020 (including Chrome for Android, as well as Microsoft Edge, which is based on it).

參考:

https://en.wikipedia.org/wiki/HTTP/3

https://developers.cloudflare.com/http3/intro

https://quic.nginx.org/README

3.1 Firefox

Firefox 88 開始默認支持 HTTP/3,無需配置。

Firefox 75 及以上版本支持 HTTP/3(具體版本網上資料有些差異,現在都已經默認支持,不做深究)。

啟用方法:在地址欄輸入'about:config',配置 network.http.http3.enabled = true

通過 “Web 開發者” 可以看到 “版本: HTTP/3” “協議版本:: TLSv1.3”

3.2 Chrome

在瀏覽器地址欄輸入 chrome://flags 回車,搜索 “quic” 可以看到 “Experimental QUIC Protocol” 點擊下拉框選擇 “Enabled”。

Chrome 83 及以上版本支持 HTTP/3,使用命令行增加如下啟動參數:

./chrome --enable-quic --quic-version=h3-27

Running on Windows:

cd C:\Users\$USER\AppData\Local\Google\Chrome\Application
chrome.exe --enable-quic --quic-version=h3-27

(replace $USER with the name of your account on Windows)

Running on macOS:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-quic --quic-version=h3-27

Microsoft Edge (based on Chromium) 與 Chrome 同步支持,例如在 macOS 中運行 Edge:

/Applications/Microsoft\ Edge.app//Contents/MacOS/Microsoft\ Edge --enable-quic --quic-version=h3-27

3.3 Safari

Safari Technology Preview Release 104 which was just released has added HTTP3 as an experimental feature. To enable it, you’ll first need to enable the “Develop” menu through its settings.

macOS Big Sur 11 和 iOS 14 中的 Safari 開始實驗性的支持 HTTP/3,但是默認沒有啟用,開啟方法如下:

在 macOS Big Sur 11 中的 Safari 14 (或更高版本),偏好設置...--高級,勾選【在菜單欄中顯示“開發”菜單】。然后在點擊“開發”菜單--實驗性功能,點擊勾選 HTTP/3。

img

在 iOS 14 和 iOS 15 中,設置--Safari 瀏覽器--高級--Experimental Features,可以找到 HTTP/3 並點擊啟用。

3.4 Curl

文檔顯示 Curl 7.66 及以上支持 HTTP/3,使用 --http3 參數,但實際上需要額外配置才能支持!

  • Ubuntu 20.04 自帶 7.68 但不可直接使用

  • CentOS 8 自帶 7.61,更新也不可直接使用:

rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/rhel8/x86_64/city-fan.org-release-2-1.rhel8.noarch.rpm
dnf --enablerepo=city-fan.org install libcurl libcurl-devel
  • macOS 10.15.5 自帶 7.64,更新后也不可直接使用:
brew install curl
ln /usr/local/bin/curl /usr/local/Cellar/curl/7.71.1/bin/curl
chmod +x /usr/local/bin/curl

報錯如下:

curl --http3 -s -o /dev/null -v https://sysin.org

curl: option --http3: the installed libcurl version doesn't support this
curl: try 'curl --help' or 'curl --manual' for more information

解決辦法:創建支持 HTTP/3 的 curl:參看 HTTP3 (and QUIC)

ngtcp2 version(Linux)

  • Build with OpenSSL

Build (patched) OpenSSL

git clone --depth 1 -b openssl-3.0.0+quic https://github.com/quictls/openssl
cd openssl
./config enable-tls1_3 --prefix=<somewhere1>
make
make install

Build nghttp3

cd ..
git clone https://github.com/ngtcp2/nghttp3
cd nghttp3
autoreconf -fi
./configure --prefix=<somewhere2> --enable-lib-only
make
make install

Build ngtcp2

cd ..
git clone https://github.com/ngtcp2/ngtcp2
cd ngtcp2
autoreconf -fi
./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only
make
make install

Build curl

cd ..
git clone https://github.com/curl/curl
cd curl
autoreconf -fi
LDFLAGS="-Wl,-rpath,<somewhere1>/lib" ./configure --with-openssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
make
make install

For OpenSSL 3.0.0 or later builds on Linux for x86_64 architecture, substitute all occurances of "/lib" with "/lib64"

  • Build with GnuTLS

Build GnuTLS

git clone --depth 1 https://gitlab.com/gnutls/gnutls.git
cd gnutls
./bootstrap
./configure --prefix=<somewhere1>
make
make install

Build nghttp3

cd ..
git clone https://github.com/ngtcp2/nghttp3
cd nghttp3
autoreconf -fi
./configure --prefix=<somewhere2> --enable-lib-only
make
make install

Build ngtcp2

cd ..
git clone https://github.com/ngtcp2/ngtcp2
cd ngtcp2
autoreconf -fi
./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-gnutls
make
make install

Build curl

cd ..
git clone https://github.com/curl/curl
cd curl
autoreconf -fi
./configure --without-openssl --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
make
make install

quiche version(Linux)

  • build

Build quiche and BoringSSL:

git clone --recursive https://github.com/cloudflare/quiche
cd quiche
cargo build --release --features ffi,pkg-config-meta,qlog
mkdir deps/boringssl/src/lib
ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) deps/boringssl/src/lib/

Build curl:

cd ..
git clone https://github.com/curl/curl
cd curl
autoreconf -fi
./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" --with-openssl=$PWD/../quiche/deps/boringssl/src --with-quiche=$PWD/../quiche/target/release
make
make install

If make install results in Permission denied error, you will need to prepend it with sudo.

macOS:Curl + Quiche

Homebrew formula for curl + quiche to easily build and test HTTP/3 on MacOS.

Requirement:

Install homebrew from https://brew.sh/

Build:

This will replace your current curl installation. Run the following commands to install required dependencies and to build curl with quiche support.

  • Uninstall curl if you already have:
brew remove -f curl
  • Build curl with quiche:
brew install -s https://raw.githubusercontent.com/cloudflare/homebrew-cloudflare/master/curl.rb

2020.11.13 更新:

由於 brew 版本更新,報錯如下:

Error: Calling Non-checksummed download of curl formula file from an arbitrary URL is disabled! Use 'brew extract' or 'brew create' and 'brew tap-new' to create a formula file in a tap on GitHub instead.

解決方法:卸載通過 brew 安裝的 curl

brew uninstall curl

At the end curl binary will be installed on "/usr/local/opt/curl/bin", so you need to add to your $PATH

ln /usr/local/opt/curl/bin/curl /usr/local/bin/curl

Check if curl with H3 support is built properly:

curl --help | egrep 'alt-svc|http3'
     --alt-svc <file name> Enable alt-svc with this cache file
     --http3         Use HTTP v3

Now, you can try curl on any H3 enabled sites.

curl --http3 -I https://sysin.org
curl --http3 -I https://cloudflare-quic.com

用法

Use HTTP/3 directly:

curl --http3 https://nghttp2.org:4433/

Upgrade via Alt-Svc:

curl --alt-svc altsvc.cache https://quic.aiortc.org/

See this list of public HTTP/3 servers

3.5 在線檢測網站

https://http3check.net/

https://gf.dev/http3-test


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM