You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅可通过代码发起HTTP请求访问URL接口是否可实现?

需求可行性判断

该需求可落地,能够拦截绝大多数普通用户直接通过浏览器地址栏访问接口的场景,但不存在100%绝对防护的方案:所有HTTP请求的头信息都可被人为伪造,专业人员可以通过抓包获取合法请求的头字段,模拟代码请求获取内容,只能实现相对防护。

具体实现方案

你可以根据自己的业务场景选择以下一种或多种组合方案:

  • 校验X-Requested-With请求头
    前端常规XHR、Ajax、Axios请求默认都会携带该请求头,值固定为XMLHttpRequest,后端判断请求头无该字段时直接拒绝响应即可。如果你的接口需要支持Curl、Node服务端之类的非浏览器端代码调用,只需要要求调用方手动在请求中加上该头即可。
  • 校验Accept请求头
    浏览器地址栏直接发起请求时,默认的Accept头会优先申请text/html类型的响应,而API类的代码请求一般会指定Accept为application/json,后端可以判断如果Accept中text/html的优先级高于接口支持的响应类型,就直接返回拒绝。
  • 校验Origin/Referer请求头
    若你的接口仅给自有前端站点提供服务,可以校验Origin或Referer头是否为你的业务域名,直接通过浏览器地址栏访问的请求不会携带对应域名的头信息,直接拦截即可。该方案不适合公开给第三方调用的接口。
  • 强制携带自定义认证头
    这是安全性最高的方案:约定所有调用方必须在请求头中携带自定义字段(比如X-API-Key),值为提前分配的有效密钥,后端校验密钥合法才返回响应。普通用户通过浏览器地址栏访问时无法自定义请求头,自然无法拿到内容,同时该方案兼容所有代码调用场景,只要调用方在请求中配置对应的密钥头即可。
注意事项
  • 所有基于请求头的校验都只能防普通用户,无法阻挡专业人员伪造请求,若对接口安全性要求高,建议额外搭配接口签名校验、请求频率限流、用户权限校验等方案提升防护能力。
  • 若接口公开给第三方开发者使用,优先选择自定义API密钥的方案,不要限制Origin、X-Requested-With这类第三方调用默认不会携带的头字段。

内容的提问来源于stack exchange,提问作者mike5421

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:21:00