从AWS S3静态网站调用Google Place API时遇CORS错误求助
确认Google API控制台的CORS配置细节
确保你添加的Allowed Origins是S3静态网站的完整域名(比如https://your-bucket-name.s3-website-us-east-1.amazonaws.com),注意区分HTTP和HTTPS,不要加多余的斜杠或后缀。另外,Google的配置更改可能需要5-10分钟才会生效,改完后等一会儿再测试。改用Google Maps JavaScript API客户端库调用
直接向https://maps.googleapis.com/maps/api/place/autocomplete发REST请求容易触发CORS限制,Google官方推荐使用Maps JavaScript SDK的google.maps.places.Autocomplete组件来实现自动完成功能,这种方式通过script标签加载库,不会产生CORS问题,也能更好地兼容Google的API规则。验证S3存储桶的CORS是否实际生效
用curl命令测试你的S3站点的CORS响应:curl -H "Origin: https://your-s3-site-domain.com" -v https://your-s3-site-domain.com/index.html查看响应头中是否包含
Access-Control-Allow-Origin: *或者你指定的域名,没有的话说明S3的CORS配置没生效,重新保存配置试试,或者检查桶的静态网站托管是否正确开启。检查请求中的自定义Headers
如果你的请求带了额外的自定义Header(比如X-Requested-With),要确保Google API控制台的CORS配置里的Allowed Headers也包含这些Header,否则Google会拒绝跨域请求。核对API密钥的权限限制
检查你的Google API密钥是否设置了正确的HTTP referrer限制,必须把你的S3网站域名添加到允许的referrer列表里。如果密钥限制错了,请求会被Google拦截,浏览器可能误报为CORS错误。
内容的提问来源于stack exchange,提问作者Sachin Vairagi

