【问题标题】:response status code 200 but cors error in react js axios响应状态代码200,但反应js axios中的cors错误
【发布时间】:2021-11-16 17:00:25
【问题描述】:

我正在尝试从 https://citizenatlas.dc.gov/newwebservices/locationverifier.asmx/findLocation2 获取开源 API 使用 axios。 我的代码是:

let fetchDCWardUrl = 'https://citizenatlas.dc.gov/newwebservices/locationverifier.asmx/findLocation2?str=2%252015th%2520St%2520NW,%2520Washington,%2520DC%252020024,%2520USA&f=json';

await axios.get(fetchDCWardUrl).then((response) => {
      console.log(response);
    });

我得到: 当我从邮递员那里点击相同的 URL 或直接点击浏览器的 URL 栏时,我得到了没有任何错误的响应。我也试过用post方法,试过js fetch。

【问题讨论】:

    标签: javascript reactjs axios cors


    【解决方案1】:

    必须在服务器端启用 Cors。出于开发目的,您可以使用react proxy settins,但在生产服务器上,您必须正确设置服务器以为此请求创建代理

    【讨论】:

    • setup your server to create proxy for this request 这应该为我的前端托管服务器完成吗?
    • 我会这样做...这取决于您使用的服务器技术。就我而言,我会在 nginx 中以某种方式做到这一点。
    【解决方案2】:

    我认为网站必须允许来自 javascript 的请求。那是服务器端的事情。如果没有证明您是它所属的“真实”前端,您不应该能够向后端发送请求。它是您浏览器的一项安全功能。如果你正常打开它,浏览器不会捕捉到那个......

    要解决这个问题,您可以编写自己的后端来捕获请求并将内容发送到您的前端,然后在那里设置 cors。

    【讨论】:

    • 那么,如果同一个 API 从实时服务器上命中,它可能会起作用吗?还有一个网站从同一服务器访问 API,但它能够获取数据。网址为:planning.dc.gov/whatsmyward
    • 是的,它是一个浏览器安全功能,正如您提到的,如果您在浏览器中正常输入 url,它会起作用,如果您制作后端,该后端会作为普通浏览器发送调用,然后设置正确的cors在那里它将完美地工作。
    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 2017-12-15
    • 2022-01-22
    • 1970-01-01
    • 2020-12-20
    • 2020-03-12
    • 2018-10-23
    • 2020-11-29
    相关资源
    最近更新 更多