我创建了一个动态URL,该URL要求访问者IP地址,然后生成令牌!令牌生成良好,并且IP地址被传入并设置为state!但是,当我将this.state.ip传递到下一个动态URL时,它没有捕获到它……而是空白,尽管我看到它处于我的状态。当我将状态复制并粘贴到URL中并进行硬编码并运行时,它就可以了!我对这里发生的事情感到非常困惑,还有其他什么可以使用React来获取公共iP地址吗? IP位址为32位数字?
我尝试解析它,但是IP地址包含数字和字母。尝试了许多不同的端点来使用,没有运气。
this.state = {
id: this.props.match.params.id,
generatedTicket: '',
ip: []
};
}
componentDidMount() {
axios
.get(`https://ip.seeip.org/geoip`)
.then(res => {
console.log('ip:', res.data.ip);
this.setState({
ip: res.data.ip
});
})
.catch(err => {
console.log(err);
});
const ip = this.state.ip;
console.log(ip);
axios
.get(
`https://cors-anywhere.herokuapp.com/videospider.in/getticket.php?key=0000000000&secret_key=000000000000000000000&video_id=${
this.props.match.params.id
}&ip=${ip}`
)
.then(res => {
console.log('response:', res);
this.setState({
generatedTicket: res.data
});
})
.catch(err => {
console.log(err);
});
}
预期结果是一个看起来像这样的URL: https://cors-anywhere.herokuapp.com/videospider.in/getticket.php?key=0000000000&secret_key=000000000000000000000&video_id=00000&ip=1234:5678:90124:5678:9012:3456:7890
当然,这些不是实际数字,只是出于安全目的的占位符。所有其他部分(例如按键)都是完美的,正是IP导致了问题!实际输出为空白。如果我像硬编码一样通过,则错误消息是:原因:为IP地址12345创建了票证,而您的IP地址是0000:0000:0000:0000:0000:0000:0000:0000:0000
但是对于实际的它会引发错误:原因:已为IP地址创建票证,而您的IP地址为0000:0000:0000:0000:0000:0000:0000:0000(此空间为空白)