【发布时间】:2016-07-27 13:15:06
【问题描述】:
我有一个公共 php 站点。它具有 JSON 网络服务,我将其用于 jQuery 自动完成。该网站是公开的,网络服务也是如此。
但是,我想限制网络服务,以便它们只能从相应的网站(即从该网站加载的 HTML 页面)调用。
对此有什么好的解决方案?
在这种情况下的限制意味着:
我的网络服务(例如fooservice.php)是公开的。由于用户未通过身份验证,我想知道如何检查它是否是从我的网站页面调用的(例如 mypagewithautocomplete.php )
https://stackoverflow.com/a/38614140/356726 是一个有用的答案 (+1),但只能避免其他浏览器使用 AJAX。它不会阻止仅在浏览器中读取 JSON 结果。
【问题讨论】:
-
“限制”是什么意思?那是一个广泛的范围。基本上,如果你想防止在其他脚本中使用,你应该联系CORS:de.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
-
您可以在加载网页时生成令牌,将其存储在 HTML 中,将其存储在数据库中,让自动完成功能随每个请求发送令牌,针对数据库验证令牌,甚至过期12 小时或其他时间后的令牌。
-
检查 CORS 和标题如下所述,到目前为止感谢developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
标签: php jquery json web-services