如何修复Axios.get无法正确传入动态IP

时间:2019-05-28 20:13:57

标签: javascript reactjs

我创建了一个动态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(此空间为空白)

0 个答案:

没有答案