API发布者操作指南 -- ⑥开启跨域访问

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

API发布者操作指南 -- ⑥开启跨域访问

API网关默认不开启跨域访问,如果您需要开启,请参考以下说明完成跨域配置。


1 简单跨域访问

如果是创建新的API,在定义API请求时,打开“支持跨域(CORS)”开关。



2 简单跨域请求的场景需要满足以下两个条件

① 请求方法是HEAD,GET,或者POST;

② HTTP的头信息不超出以下范围:

  • Accept

  • Accept-Language

  • Content-Language

  • ast-Event-ID

  • Content-Type:取值范围:application/x-www-form-urlencoded、multipart/form-data、text/plain


有关简单跨域的详细信息,可参考简单请求:


3 简单请求

对于简单请求,您需要在创建API时,开启“支持CORS”功能。


场景一:

已开启CORS,且后端服务响应消息中未指定跨域头时,API网关接受任意域的请求,并返回“Access-Control-Allow-Origin”跨域头,示例如下:


浏览器发送一个带Origin字段的请求消息:

GET /test/cors HTTP/1.1
Host: www.example.com
Orgin: http://www.cors.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Accept: application/json
Date: Wed, 10 Mar 2021 05:49:00 GMT

Origin:此字段必选,表示请求消息所属源,上例中请求来源于“http://www.cors.com",API网关/后端服务根据这个值,决定是否同意本次请求。


后端服务返回响应消息:

HTTP/1.1 200 OK
Date: Wed, 10 Mar 2021 03:35:01 GMT
Content-Length: 3
Content-Type: text/plain; charset=utf-8
OK


API网关响应消息:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 3
Content-Type: text/plain; charset=utf-8
Date: Wed, 10 Mar 2021 03:33:24 GMT
Server: KCGW
X-Api-Proxy-Latency: 0.65
X-Api-Requestid: 7780097b-af0a-4b36-8e21-8c8438276ec5
X-Api-Upstream-Latency: 1

Access-Control-Allow-Origin:此字段必选,“*”表示API网关接受任意域的请求。


场景二:

已开启CORS,且后端服务响应消息中指定跨域头时,后端服务响应的跨域头将覆盖API网关增加的跨域头,示例如下:


浏览器发送一个带Origin字段的请求消息:


GET /test/cors HTTP/1.1
Host: www.example.com
Orgin: http://www.cors.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Accept: application/json
Date: Wed, 10 Mar 2021 05:49:00 GMT

Origin:此字段必选,表示请求消息所属源,上例中请求来源于“http://www.cors.com”,API网关/后端服务根据这个值,决定是否同意本次请求。



后端服务返回响应消息:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://www.cors.com
Date: Wed, 10 Mar 2021 03:38:29 GMT
Content-Length: 3
Content-Type: text/plain; charset=utf-8
OK

Access-Control-Allow-Origin:表示后端服务接受“http://www.cors.com”的请求。


API网关响应消息:


HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://www.cors.com
Content-Length: 3
Content-Type: text/plain; charset=utf-8
Date: Wed, 10 Mar 2021 03:39:21 GMT
Server: KCGW
X-Api-Proxy-Latency: 1.13
X-Api-Requestid: 4761b6df-c8e2-4db6-aa65-c70cd4d57c82
X-Api-Upstream-Latency: 1
OK


后端服务响应消息中的跨域头覆盖API网关响应消息中的跨域头。



4 非简单请求



浏览器发送“Method”为“OPTIONS”的API请求:


OPTIONS /HTTP/1.1
User-Agent: curl/7.29.0
Host: localhost
Accept: */*
Origin: http://www.cors.com
Access-Control-Request-Method: PUT


  • Origin:此字段必选,表示请求消息所属源。

  • Access-Control-Request-Method:此字段必选,表示请求会使用哪些HTTP请求方法。

  • Access-Control-Request-Headers:此字段可选,表示请求会额外发送的头信息字段。


后端服务返回消息:



API网关返回消息:


HTTP/1.1 200 OK
Access-Control-Allow-Headers: X-Api-AppKey, X-Api-SignHeaders, X-Api-TimeStamp, X-Api-Signature
Access-Control-Allow-Methods: GET,POST,PUT,DELETE,HEAD,PATCH,OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Api-RequestID,X-Api-Upstream-Latency,X-Api-Proxy-Latency,X-Api-Upstream-Retry-Times,X-Api-RateLimit-Ip,X-Api-RateLimit-App,X-Api-RateLimit-Api
Content-Length: 3
Content-Type: text/plain; charset=utf-8
Date: Wed, 10 Mar 2021 05:43:54 GMT
Server: KCGW
Access-Control-Max-Age: 86400
X-Api-Proxy-Latency: 0.74
X-Api-Requestid: 5c455fad-a624-4bb1-a0e1-3dd2bf93718c
X-Api-Upstream-Latency: 0
  • Access-Control-Allow-Origin:此字段必选,“*”表示API网关接受任意域的请求。

  • Access-Control-Allow-Headers:当请求消息中包含此字段时,此字段必选。表示允许跨域的所有请求头信息字段。

  • Access-Control-Expose-Headers:表示跨域访问允许查看的返回头信息字段。

  • Access-Control-Allow-Methods:此字段必选,表示API网关支持的所有HTTP请求方法。

  • Access-Control-Max-Age:此字段可选,表示本次预检的有效期,单位:秒。在有效期内,无需再次发出预检请求。



浏览器发送一个带Origin字段的请求头:


PUT /test/cors/3 HTTP/1.1
Host: www.example.com
Orgin: http://www.cors.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Accept: application/json
Date: Wed, 10 Mar 2021 05:49:00 GMT



后端服务返回消息:

HTTP/1.1 200 OK
Date: Wed, 10 Mar 2021 05:49:00 GMT
Content-Type: application/json
Content-Length: 16
OK


API网关返回消息:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 3
Content-Type: text/plain; charset=utf-8
Date: Wed, 10 Mar 2021 05:52:33 GMT
Server: KCGW
X-Api-Proxy-Latency: 0.55
X-Api-Requestid: 6bf10c55-8b63-4ff2-9677-8c837c763fd6
X-Api-Upstream-Latency: 2
OK


API发布者操作指南 -- ⑥开启跨域访问

API网关默认不开启跨域访问,如果您需要开启,请参考以下说明完成跨域配置。1 简单跨域访问如果是创建新的API,在定义API请求时,打开“支...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息