API网关简单跨域请求实现示例

•  简单请求实现
 
腾讯云API网关默认不支持跨域访问CORS功能,如要需要支持跨域访问CORS,请先在API网关管理控制台开启CORS并重新发布API。
 
当API网关接收到某个API的简单跨域请求时:
 
•   如果该API不支持跨域访问CORS功能, API网关直接返回报错信息,不再向后端服务器转发该API请求。
 
•   如果该API支持跨域访问CORS功能,后端服务器根据自身的规则返回响应信息,如果后端服务器的返回信息中没有携带相关字段,API网关会补齐相关字段。
 
示例一:后端服务器允许任意域的访问
 
1.  浏览器发送携带Origin的API请求:
 
GET /testSimpleCors HTTP/1.1
 
Host: pinganyun.com
 
Orgin: http://www.Server-test.com
 
Content-Type: application/x-www-form-urlencoded; charset=utf-8
 
Accept: application/json
 
Date: Tue, 21 Jan 2019 21:15:12 GMT
 
Origin:表示请求的来源。后端服务器会根据Origin的取值,判断是否同意本次请求。如果后端服务器返回的消息中没有携带Access-Control-Allow-Origin,那么API网关就会添加Access-Control-Allow-Origin: *
 
2.  后端服务器返回的响应信息:
 
HTTP/1.1 200 OK
 
Date: Tue, 21 Jan 2019 21:15:13 GMT
 
Content-Type: application/json
 
Content-Length: 25
 
{"ret":"0", "msg":"succ"}
 
3.  API网关发送给浏览器的响应信息:
 
HTTP/1.1 200 OK
 
Date: Tue, 21 Jan 2019 21:15:13 GMT
 
Content-Type: application/json
 
Content-Length: 25
 
Access-Control-Allow-Origin: *
 
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
 
{"ret":"0", "msg":"succ"}
 
Access-Control-Allow-Origin:取值为*,表示API网关接受任意域的请求。
 
实例二:后端服务器允许指定域的访问
 
1.  浏览器发送携带Origin的API请求:
 
GET /testSimpleCors HTTP/1.1
 
Host: pinganyun.com
 
Orgin: http://www.Server-test.com
 
Content-Type: application/x-www-form-urlencoded; charset=utf-8
 
Accept: application/json
 
Date: Tue, 21 Jan 2019 21:15:12 GMT
 
Origin:表示请求的来源。后端服务器根据Origin的取值,判断是否同意本次请求。
 
2.  后端服务器返回的响应信息:
 
HTTP/1.1 200 OK
 
Date: Tue, 21 Jan 2019 21:15:13 GMT
 
Content-Type: application/json
 
Content-Length: 25
 
Access-Control-Allow-Origin: http://www.Server-test.com
 
{"ret":"0", "msg":"succ"}
 
Access-Control-Allow-Origin:后端服务器接受“http://www.Server-test.com”的请求。
 
3.   API网关发送给浏览器的响应信息:
 
HTTP/1.1 200 OK
 
Date: Tue, 21 Jan 2019 21:15:13 GMT
 
Content-Type: application/json
 
Content-Length: 25
 
Access-Control-Allow-Origin: http://www.Server-test.com
 
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
 
{"ret":"0", "msg":"succ"}
 
Access-Control-Allow-Origin:API网关接受“http://www.Server-test.com”的请求。