jquery - 当任何人都可以看到 JS 代码时,JavaScript API 密钥有什么意义
我见过像谷歌这样的服务,当你进行 JavaScript 调用时,需要添加一个 API 密钥,就像这样。
https://www.google.com/jsapi?key=thekeygoeshere
当代码是可见的并且密钥可以被读取时,拥有这个 JavaScript API 密钥有什么意义?有人难道不能只是复制这个密钥并在自己的网站上使用吗?还是他们在后台做了其他事情来确保密钥属于发起调用的网站?
答案#1
大概他们会检查引用者 HTTP 头。
大多数用户会发送它。所以如果是:
- 与密钥匹配的网站,它们可以正常运行。
- 与密钥不匹配的网站,他们可以拒绝请求。
- 空白,它们可以正常运作,并允许极少数人在人不该用的网站上使用 API。
使用错误密钥访问网站的大多数访客将会被阻止,所以一开始在网站上使用错误密钥是没有价值的。
答案#2
谷歌代码将使用 AJAX 或类似的东西,向他们的服务器发送请求,详细说明你的密钥以及它被使用的网站的 URL。然后谷歌可以检查该密钥是否用于正确的网站,如果不是,就会阻止代码运行。
不过,这个地图 API 似乎可以在任何网站上用任何密钥工作。