javascript 中缺少 CORS 标头“Access-Control-Allow-Origin”,但我可以通过浏览器访问该链接

CORS header 'Access-Control-Allow-Origin' missing in javascript but I can access the link via browser

提问人:acke 提问时间:6/14/2023 最后编辑:ControlAltDelacke 更新时间:6/14/2023 访问量:900

问:

我刚刚开始学习javascript,我刚刚遇到了一个我无法修复的错误。我有一个链接,它指向一个 json 文件,其中包含一个指向我想用作网站背景的图像的链接。我可以毫无问题地从浏览器访问 json,但是当我尝试使用 javascript 进行访问时(代码如下),我收到错误 CORS 标头“Access-Control-Allow-Origin”丢失。从我所读到的内容来看,这意味着服务器不允许在当前源中运行的客户端访问内容。但是,这让我感到困惑,因为我可以从浏览器访问内容。服务器能否在 http 请求中看到发送 get 请求的客户端类型?总之,我对这个错误的根源感到困惑,想知道是否有办法解决它。

用于发出请求的代码:

    function get_link() {
        const url = "http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1";
        const http = new XMLHttpRequest();
        http.open("GET", url);
        http.send();
        http.onreadystatechange=(e)=>
        console.log(http.responseText)
    }

当我使用浏览器访问 url 时,我看到一个 json 文件,但是当我使用 XMLHttpRequest() 函数发送 get 请求时,我收到错误 CORS 标头“Access-Control-Allow-Origin”缺失,代码为 200。为什么会有区别,我怎样才能将 json 文件提取到我的 javascript 程序中?

javascript json api cors xmlhttprequest

评论

1赞 jabaa 6/14/2023
这是浏览器阻止了资源。CORS 是一种浏览器安全功能,用于保护用户/访问者。它不会保护服务器上的资源。
2赞 jabaa 6/14/2023
这回答了你的问题吗?为什么我的 JavaScript 代码收到“请求的资源上不存在'Access-Control-Allow-Origin'标头”错误,而 Postman 没有?
0赞 acke 6/14/2023
非常感谢,我想我对这个问题的理解更:D在我看来,使用嵌入式 javascript 似乎我尝试做的事情(向外部资源发出 get 请求)是不可能的,并且我需要某种后端来执行此操作。这是正确的吗?
0赞 jabaa 6/14/2023
是的,没错。

答: 暂无答案