开启跨域访问 非简单请求 对于非简单请求,您需要开启跨域访问,并且创建一个“请求方法”为“OPTIONS”的API。 “请求方法”为“OPTIONS”的API和普通API的区别如下: 所属分组:选择已开启CORS的API所在的分组。 请求方法:选择“OPTIONS”。 请求协议:选择与已开启CORS的API相同的请求协议。 请求Path:填斜杠/即可,也可选择与已开启CORS的API相同或者匹配的请求Path。 安全认证:可选择“无认证”。无论选择哪种认证方式,API网关都按照无认证处理。 支持跨域CORS:选择开启CORS。 假设后端服务类型为Mock,示例如下: 浏览器发送“Method”为“OPTIONS”的API请求: OPTIONS /HTTP/1.1 UserAgent: curl/7.29.0 Host: localhost Accept: / Origin: AccessControlRequestMethod: PUT AccessControlRequestHeaders: XSdkDate Origin:此字段必选,表示请求消息所属源。 AccessControlRequestMethod:此字段必选,表示请求会使用哪些HTTP请求方法。 AccessControlRequestHeaders:此字段可选,表示请求会额外发送的头信息字段。 后端服务返回消息: 无 API网关返回消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 02:38:48 GMT ContentType: application/json ContentLength: 1036 Server: apigateway XRequestId: c9b8926888c356d6a9581c5c10bb4d11 AccessControlAllowOrigin: AccessControlAllowHeaders: XStage,XSdkDate,XSdkNonce,XProxySignedHeaders,XSdkContentSha256,XForwardedFor,Authorization,ContentType,Accept,AcceptRanges,CacheControl,Range AccessControlExposeHeaders: XRequestId,XApigLatency,XApigUpstreamLatency,XApigRateLimitApi,XApigRateLimitUser,XApigRateLimitApp,XApigRateLimitIp,XApigRateLimitApiAllenv AccessControlAllowMethods: GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH AccessControlMaxAge: 172800 AccessControlAllowOrigin:此字段必选,“”表示API网关接受任意域的请求。 AccessControlAllowHeaders:当请求消息中包含此字段时,此字段必选。表示允许跨域的所有请求头信息字段。 AccessControlExposeHeaders:表示跨域访问允许查看的返回头信息字段。 AccessControlAllowMethods:此字段必选,表示API网关支持的所有HTTP请求方法。 AccessControlMaxAge:此字段可选,表示本次预检的有效期,单位:秒。在有效期内,无需再次发出预检请求。 浏览器发送一个带Origin字段的请求头: PUT /simple HTTP/1.1 Host: www.test.com Orgin: ContentType: application/xwwwformurlencoded; charsetutf8 Accept: application/json Date: Tue, 15 Jan 2019 01:25:52 GMT 后端服务返回消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT ContentType: application/json ContentLength: 16 Server: apigateway {"status":"200"} API网关返回消息: HTTP/1.1 200 OK Date: Tue, 15 Jan 2019 01:25:52 GMT ContentType: application/json ContentLength: 16 Server: apigateway XRequestId: 454d689fa6984710b3ca486458fb08b AccessControlAllowOrigin: {"status":"200"}