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”的请求。