我有一个服务器设置,使用 nginx 提供静态内容,并将所有 PHP/动态请求代理到 127.0.0.1 上的 apache
我正在为我的数据库构建 API,我需要根据客户端的来源(域名)而不是 IP 来允许客户端。基于 CORS 规则。
因此,当我从 API 服务器发送 HTTP 标头时header("Access-Control-Allow-Origin: www.client-requesting.myapi.com");
,我必须告诉它我允许哪个来源,否则由于同源策略,客户端请求将无法对我的 API 起作用。
问题是我如何知道哪个域名(如果有)调用了我的 API?
应该如何配置 nginx 和 apache 来传递 origin 参数?我尝试使用 google 搜索,但只找到了一些使用 mod_rpaf 的可能解决方案,但我想确定一下。
谢谢!
答案1
据我所知,Same-Origin-Policy 和 CORS 是基于服务器的,而不是基于客户端的,除非你在 上部署了 API-Access-Scripts www.client-requesting.myapi.com
。
因此,您使用 CORS 允许的不是允许来自何处的 API 请求,而是允许外部脚本从哪个源访问您的 API,例如
- API 位于 api.my.com (同源)
- JS 位于 scripts.my.com (Access-Control-Allow-Origin:scripts.my.com)