API网关跨域请求原理

•  简单请求原理
 
腾讯云API网关默认不支持跨域访问CORS功能,如要需要支持跨域访问CORS,请先在API网关管理控制台开启CORS并重新发布API。
 
调用方在调用开启CORS功能的API时,会自动在HTTP请求头中添加Origin字段,表明请求的来源。后端服务器收到请求后,根据请求头中的Origin字段,并结合自身的跨域规则,在应答消息中通过Access-Control-Allow-Origin字段,返回是否同意本次请求的验证结果。
 
•   后端服务器接受任意域的跨域访问,返回结果中Access-Control-Allow-Origin字段为:

•   如果后端服务器仅允许某一指定的域进行跨域访问。
 
•  预检请求原理
 
腾讯云API网关默认不支持跨域访问CORS功能,如要需要支持跨域访问CORS,请先在API网关管理控制台开启CORS并重新发布API。同时,您需要创建一个满足以下要求的预检API:
 
•   API分组:选择开启CORS功能的API所在分组。
调用方在调用预检API时,需要通过QueryString字段传递PA-AG-GroupID(GroupID可在API网关管理控制台查看,可参考查看分组详情),告诉API网关要调用的预检API的分组。当API网关接收到合法的预检请求后,不会进行认证和鉴权等操作。
 
•   认证方式:选择无认证。
 
•   HTTP Method:接口调用类型选择OPTIONS。
 
•   请求Path:选择与已开启CORS功能的API相同的PATH,或与已开启CORS功能的API相匹配的请求Path。
 
调用方在调用满足上述条件的预检API时,无需在API请求中添加任何API网关需要的请求头等信息,即可在浏览器等环境中直接通过URI访问其他域的后端服务。
 
预检请求处理过程:
 
1.   浏览器增加一次预先验证请求,用于询问后端服务器当前页面所在的域是否在可以发送跨域请求,以及可以使用哪些HTTP请求方法和头信息字段。
 
2.   预先检查通过后,向后端服务器发送简单请求。

标签