【问题标题】:Ipify Getting Blocked By Cors. How do I get it be allowed? [duplicate]Ipify 被 Cors 阻止。我怎样才能让它被允许? [复制]
【发布时间】:2019-09-02 15:13:20
【问题描述】:

我很想添加代码来获取我网站上用户的 IP 地址。我正在使用带有 axios 的 react(mobx/mst)。

   getIpAddress: flow(function*() {

    const response = yield axios.get('http://api.ipify.org/?format=text');
    self.ipAddress = response.data;  

    })

Access to XMLHttpRequest at 'http://api.ipify.org/' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource

【问题讨论】:

    标签: javascript reactjs cors axios


    【解决方案1】:

    这是典型的 CORS 问题。服务器不允许您的客户端直接收集信息。你应该使用一些服务器端代理或使用https://cors-anywhere.herokuapp.com/,所以你的代码看起来像这样

    getIpAddress: flow(function*() {
      const response = yield axios.get('https://cors-anywhere.herokuapp.com/http://api.ipify.org/?format=text');
      self.ipAddress = response.data;  
    })
    

    【讨论】:

    • 抱歉您的代码看起来像我的代码?你加了什么?我也不明白 Jquery ajax(这是他们的例子之一:ipify.org)是如何工作的,但不是 axios
    • 对不起,我刚刚编辑了我的答案,请再检查一遍
    • 谢谢,确实有效,但仍然不清楚为什么像 jquery 这样的东西有效,而不是 axios。
    • axios 和 jquery 可能使用非常相似的原生 fetch API 实现,它在 jquery 上也不起作用。你可以在官方 MDN 网站上阅读更多关于 CORS 的信息:developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    • 不知道我们通过代理时获取的是服务器的ip还是客户端的ip...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2021-05-27
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多