java防止url直接输入访问,如何防止“其他”域访问URL

我有一个Node / React应用程序从API中提取数据 .

在服务器端( server.js ),我有一个“内部”URL,它从API中获取数据,然后将其作为JSON返回 . 像这样:

server.get('/api/data', (req, res) => {

Promise.resolve(getAPIData()).then(data => {

res.writeHead(200, {'Content-Type': 'application/json'})

return res.end(serialize(data))

}).catch((error) => {

console.log(error)

res.writeHead(200, {'Content-Type': 'application/json'})

return res.end(serialize({}))

})

})

然后在React(Next.js)的前端,我用 example.com/api/data URL获取这个JSON并在页面上显示它 .

我的问题是我想限制只能从我的域访问 example.com/api/data URL(在这种情况下,假设是example.com) . 我不希望 someotherdomain.com 能够从URL访问相同的数据 .

我安装了 helmet ,但这并不是我想要的 . CORS似乎也不是答案 .

有没有标准的方法来做到这一点?

Update :

const cors = require('cors')

...

const corsOptions = {

origin: (process.env.NODE_ENV === 'development') ? 'http://localhost:3000' : 'https://example.com',

optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204

}

然后在路线上:

server.get('/api/data', cors(corsOptions), (req, res) => {

Promise.resolve(getAPIData()).then(data => {

res.writeHead(200, {'Content-Type': 'application/json'})

return res.end(serialize(data))

}).catch((error) => {

console.log(error)

res.writeHead(200, {'Content-Type': 'application/json'})

return res.end(serialize({}))

})

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值