1. 程式人生 > >12 基於閘道器服務的跨源資源共享(CORS)

12 基於閘道器服務的跨源資源共享(CORS)

如果在前面11篇Kong Gateway系列的文章中,你親自動手實驗過用瀏覽器訪問以下地址:
http://localhost:8000/v1/books
你將無法獲得書籍介面返回的書籍記錄,
本篇blog能讓你在瀏覽器中用8000埠或者8443埠能直接訪問書籍的Restful API 介面返回的資料
增刪改都可以,本篇為了簡單,沒配置驗證,也沒有使用訪問控制列表功能,
我們可以用Postman去模擬瀏覽器 在前面11篇文章中,只要加上以下4條命令中最後兩條命令,

瀏覽器就能正常訪問書籍的Restful API 介面

用Kong配置一個book服務
在安裝並啟動Kong之後,使用Kong的管理API埠8001新增一個名稱為book的服務
[[email protected] ~]# curl -i -X POST \
--url http://localhost:8001/services/ \
--data 'name=book' \

--data 'url=http://contoso.com/v1/books'

HTTP/1.1 201 Created
Date: Thu, 10 May 2018 12:46:16 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.13.1

{
    "host": "contoso.com", 
    "created_at": 1525956376, 
    "connect_timeout": 60000, 
    "id": "6401d012-893b-437c-a115-c255ee0ef496", 
    "protocol": "http", 
    "name": "book", 
    "read_timeout": 60000, 
    "port": 80, 
    "path": "/v1/books", 
    "updated_at": 1525956376, 
    "retries": 5, 
    "write_timeout": 60000
}
新增一個路由(paths[]的值必須與book服務中的/v1/books一致)
使book服務暴露出來以供使用者訪問,book服務沒必要新增多個路由。
注意啦,注意啦,注意啦,重要引數我只重複3遍
跨源資源共享(CORS)中的服務路由不允許配置--data 'hosts[]=contoso.com'
[[email protected] ~]# curl -i -X POST \
--url http://localhost:8001/services/book/routes \
--data 'paths[]=/v1/books'
HTTP/1.1 201 Created
Date: Thu, 10 May 2018 12:46:27 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.13.1

{
    "created_at": 1525927587, 
    "strip_path": true, 
    "hosts": null, 
    "preserve_host": false, 
    "regex_priority": 0, 
    "updated_at": 1525927587, 
    "paths": [
        "/v1/books"
    ], 
    "service": {
        "id": "6401d012-893b-437c-a115-c255ee0ef496"
    }, 
    "methods": null, 
    "protocols": [
        "http", 
        "https"
    ], 
    "id": "8f4d4267-2edc-4bd9-bc03-6419f5e93317"
}
為book服務啟用跨源資源共享(CORS)外掛引數配置
URL格式:http://localhost:8001/services/{name of servie}/plugins
[[email protected] ~]# curl -i -X POST \
--url http://localhost:8001/services/book/plugins \
--data "name=cors"  \
--data "config.origins=http://contoso.com" \
--data "config.methods=GET, POST" \
--data "config.headers=Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Auth-Token" \
--data "config.exposed_headers=X-Auth-Token" \
--data "config.credentials=true" \
--data "config.max_age=3600"
HTTP/1.1 201 Created
Date: Thu, 10 May 2018 12:47:29 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.13.1

{
    "created_at": 1525956449000, 
    "config": {
        "methods": [
            "GET", 
            "POST"
        ], 
        "exposed_headers": [
            "X-Auth-Token"
        ], 
        "max_age": 3600, 
        "headers": [
            "Accept", 
            "Accept-Version", 
            "Content-Length", 
            "Content-MD5", 
            "Content-Type", 
            "Date", 
            "X-Auth-Token"
        ], 
        "credentials": true, 
        "origins": [
            "http://contoso.com"
        ], 
        "preflight_continue": false
    }, 
    "id": "5f0c6512-c50a-4df1-8a8f-fbde047b6324", 
    "enabled": true, 
    "service_id": "6401d012-893b-437c-a115-c255ee0ef496", 
    "name": "cors"
}
為book服務的路由{route_id}啟用跨源資源共享(CORS)外掛引數配置
URL格式:http://localhost:8001/routes/{route_id}/plugins
[[email protected] ~]# curl -i -X POST \
--url http://localhost:8001/routes/8f4d4267-2edc-4bd9-bc03-6419f5e93317/plugins \
--data "name=cors"  \
--data "config.origins=http://contoso.com" \
--data "config.methods=GET, POST" \
--data "config.headers=Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Auth-Token" \
--data "config.exposed_headers=X-Auth-Token" \
--data "config.credentials=true" \
--data "config.max_age=3600"
HTTP/1.1 201 Created
Date: Thu, 10 May 2018 12:47:43 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/0.13.1

{
    "created_at": 1525956463000, 
    "config": {
        "methods": [
            "GET", 
            "POST"
        ], 
        "exposed_headers": [
            "X-Auth-Token"
        ], 
        "max_age": 3600, 
        "headers": [
            "Accept", 
            "Accept-Version", 
            "Content-Length", 
            "Content-MD5", 
            "Content-Type", 
            "Date", 
            "X-Auth-Token"
        ], 
        "credentials": true, 
        "origins": [
            "http://contoso.com"
        ], 
        "preflight_continue": false
    }, 
    "id": "e4118c02-9665-4e15-ad08-1c50d14088fc", 
    "enabled": true, 
    "route_id": "8f4d4267-2edc-4bd9-bc03-6419f5e93317", 
    "name": "cors"
}


相關推薦

12 基於服務資源共享(CORS)

如果在前面11篇Kong Gateway系列的文章中,你親自動手實驗過用瀏覽器訪問以下地址:http://localhost:8000/v1/books你將無法獲得書籍介面返回的書籍記錄,本篇blog能讓你在瀏覽器中用8000埠或者8443埠能直接訪問書籍的Restful A

13 基於服務的IP白名單限制訪問(Whitelist IP Restriction)

用Kong配置一個book服務在安裝並啟動Kong之後,使用Kong的管理API埠8001新增一個名稱為book的服務[[email protected] ~]# curl -i -X POST \--url http://localhost:8001/servic

18 基於服務的請求大小限制(Request Size Limiting)

Configure a Service in Kong[[email protected] ~]# curl -i -X POST \--url http://localhost:8001/services/ \--data 'name=book' \--data

03 基於服務的OAuth2驗證(OAuth2 Authentication Code Grant 授權碼模式)

https://getkong.org/plugins/oauth2-authentication 我們演示還是用books 的Restful api資料介面,把Kong Gateway - 01範例中PostgresSQL中的kong資料庫刪掉, 匯入一個已經配置好

基於.NET CORE微服務框架 -Api服務管理

最近也更新了surging新的版本 更新內容: 1. 擴充套件Zookeeper封裝 2. 增加服務元資料 3. 增加API閘道器 開源地址:https://github.com/dotnetcore/surging 2.軟體環境 IDE:Visual Studio 2017 1

.NET Core微服務基於Ocelot實現API服務

一、啥是API閘道器?   API 閘道器一般放到微服務的最前端,並且要讓API 閘道器變成由應用所發起的每個請求的入口。這樣就可以明顯的簡化客戶端實現和微服務應用程式之間的溝通方式。以前的話,客戶端不得不去請求微服務A(假設為Customers),然後再到微服務B(假設為Orders),然後是微服

.NET Core微服務基於Ocelot實現API服務(續)

一、負載均衡與請求快取 1.1 負載均衡   為了驗證負載均衡,這裡我們配置了兩個Consul Client節點,其中ClientService分別部署於這兩個節點內(192.168.80.70與192.168.80.71)。   為了更好的展示API Repsonse來自哪個節點,我們更改一下

springcloud之Zuul服務

Zuul是Netflix開源的微服務閘道器,它的核心是一系列的過濾器,這些過濾器可以完成以下功能: 身份認證與安全:識別每個資源的驗證要求,並拒絕那些與要求不符的請求。 審查與監控:在邊緣位置追蹤有意義的資料和統計結果,從而帶來精確的生產檢視。 動態路由:動態的請求路由到不同的後端叢集。

Spring Cloud Zuul(API服務)(3)

過濾器 在Spring Cloud Zuul中實現的過濾器必須包含4個基本特徵:過濾型別,執行順序,執行條件,具體操作。這就是ZuulFilter介面中定義的4個抽象方法: public abstract String filterType(); public abst

Spring Cloud Zuul(API服務)(2)

路由詳情 傳統路由配置 傳統路由配置方式就是在不依賴與服務發現機制的情況下,通過在配置檔案中具體指定每個路由表示式與服務例項的對映關係來實現API閘道器對外部請求的路由。 單例項配置:通過zuul.routes.<route>.path與zuul.routes.<r

Spring Cloud Zuul(API服務)(1)

API閘道器是一個智慧的應用伺服器,它的定義類似於面向物件設計模式中的Facade模式,它的存在就像是整個微服務架構系統的門面一樣,所有的外部客戶端訪問都需要經過他來進行排程和過濾。它除了要實現請求路由,負載均衡,校驗過濾等功能之外,還需要更多能力,比如與服務治理框架的結合,請求轉發時的熔斷機制

SpringCloud之服務(gateway)

前言 閘道器服務在SpringCloud中有很重要的作用。 可以將服務跟外網進行隔離起到一定的保護作用,同時服務間區域網通訊更加快捷。而且在閘道器中可以做限流、許可權校驗,使得服務更加專注自身業務。比如說下訂單需要登入許可權,限流,我們在本篇將介紹如何使用。 搭建閘道器專案 注意:需要新增Eureka

(五)api服務 zuul-路由

路由是微服務架構中必須的一部分,比如,“/” 可能對映到你的WEB程式上,”/api/users “可能對映到你的使用者服務上,“/api/shop”可能對映到你的商品服務商。(註解:我理解這裡的這幾個對映就是說通過Zuul這個閘道器把服務對映到不同的服務商去處理,從而變成了微服務!) 通過Zuu

Spring Cloud系列(二十三) API服務Spring Cloud Zuul(Finchley.RC2版本)

為什麼使用Spring Cloud Zuul? 通過前幾章的介紹,我們對於Spring Cloud Netflix 下的核心元件已經瞭解了大半,利用這些元件我們已經可以構建一個簡單的微服務架構系統,比如通過使用Spring Cloud Eureka實現高可用的服務註冊中

服務Zuul

SpringCloud體系最常用閘道器元件為Zuul,閘道器Zuul通過配置檔案約定的介面規則將請求轉發到對應的微服務子專案去處理,這發揮的是其路由功能。除此之外,Zuul的路由功能可以處理前端的跨越

SpringCloud實戰6-Zuul服務

為什麼需要閘道器呢? 我們知道我們要進入一個服務本身,很明顯我們沒有特別好的辦法,直接輸入IP地址+埠號,我們知道這樣的做法很糟糕的,這樣的做法大有問題,首先暴露了我們實體機器的IP地址,別人一看你的IP地址就知道服務部署在哪裡,讓別人很方便的進行攻擊操作。 第二,我

Spring Cloud入門:API服務(Spring Cloud Gateway)

文章例項使用的Spring Cloud版本為Finchley.SR1,Spring Boot版本為2.0.4。 1 Spring Cloud Gateway 在微服務架構中,閘道器作為服務的一個統一入口,所有的外部客戶端訪問都需要經過它來排程和過濾,可以實現的功能包括動

服務架構

一、要做一個閘道器服務的架構 閘道器具備哪些功能 隔絕網站應用服務與外部服務商應用的直接訪問 限流 限定訪問,ip、域名、請求等非法資訊攔截 日誌記錄 不會因為業務增加而導致網關係統重啟 二、要怎麼設計  系統職責簡述 業務系統:

Http API服務模組設計方案(微服務

Http  API閘道器服務模組設計方案1. 概述                           閘道器作為服務生產者和服務消費者之間的介面,一方面通過“服務路由”為服務消費找到所需服務的具體位置並呼叫;另一方面為後臺伺服器提供負載均衡、安全、流量控制、身份認證等相關功

Windows Server 2012 R2 配置遠端桌面服務

在常見的遠端控制方法中,微軟遠端桌面使用的 RDP 協議應當算是操作效率最高、使用者體驗最好的幾種方案之一,並且即使在網路環境較差的公網遠端連線中,也可以獲得非常好的遠端操作效能。甚至在 Linux 下也有 XRDP 這樣的 RDP 遠端操作工具實現。 不過 RDP 也有一