Javascript: "No ' 请求的资源上存在 Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null'。 “

标签 javascript jquery html ajax

我需要用 JavaScript 编写一个网页来获取我需要的一些信息。 服务器是竹服务器,我正在尝试在我的 JavaScript 中使用他们的 REST API。 https://developer.atlassian.com/display/BAMBOODEV/REST+APIs

奇怪的是,我可以通过在浏览器中键入链​​接或在 termanal 中使用 curl 命令来执行所有请求。它还通过 python 脚本工作。我可以使用该段中提到的所有方法接收数据。只是当我使用 JavaScript 时,它不再起作用了。

我一直在按照以下链接中的信息提出 CORS 请求。 http://www.codeproject.com/Articles/185506/AJAX-Cross-Origin-HTTP-request

下面附上我的代码。我想知道我是否遗漏了什么。

<!doctype html>

<html>
    <head>  
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">
        <script src="jquery-1.11.1.js"></script>
    <script src="crypto-js.js"></script>
        <script type="text/javascript">
        function showResponse (response) {
            RESPONSE = response;
            if (this && this.url && (typeof(this.url) == "string")) {
                var anchor = jQuery("#url");
                anchor.text(this.url.toString());
                anchor.attr('href', this.url.toString());
            }
            jQuery("#output").text(JSON.stringify(response, null, '  '));
        }
        </script>
        <script type="text/javascript">




    console.log("a")
    var cor = null; // cor stands for Cross-Origin request

    if (window.XMLHttpRequest) {
        console.log("support xmlhttprequest");
        cor = new XMLHttpRequest();
    }else {
        console.log("Your browser does not support Cross-Origin request!");
    }


    if("withCredentials" in cor){
        cor.open('GET', 'http://bamboo.example.com/rest/api/latest/stuff', true);
        cor.withCredentials = true;
        cor.setRequestHeader('Authorization', 'Basic encoded_stuff');
        cor.send();
    }

    cor.onload = function(){
        var responseText = xhr.responseText;
        console.log(responseText);
    };

    cor.onerror = function() {
        console.log('There was an error!');
    };





    </script>
    </head>
    <body>
        <div>URL:<a id="url"></a></div>
        <hr>
        <div>
            <pre id="output">
                <!-- content will appear here -->
            </pre>
        </div>
    </body>
</html>

Chrome 控制台显示“请求的资源上不存在 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null'。”结果连同 401 状态。

想知道我是否缺少代码?

谢谢

最佳答案

您似乎是从不在同一域中的某个 HTML 文件向此 REST API 链接发送请求。由于该链接上没有“Access-Control-Allow-Origin” header ,并且您从不同的域向它发送请求,出于安全原因,您不会从它那里得到一致的响应,而是会得到那个错误和 401 错误,因为您无权查看该链接的内容。

不幸的是,没有办法解决这个问题;该链接根本不是要从外部域请求的。

关于Javascript: "No ' 请求的资源上存在 Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null'。 “,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336593/

相关文章:

javascript - 将 HTML 复选框与元素链接起来,以便在未选中复选框时隐藏

javascript - Chrome : display: inline weirdness. ..

javascript - QT:Javascript 执行缓慢(除非我登录到控制台)

javascript - 强制 d3 折线图忽略空值

javascript - Visual Studio 2017 是否有更漂亮的等价物? (或设置类似的方法)

php - 使用 JQuery 将变量传递给 Controller ​​ - PHP Codeigniter

javascript - 警报框不打印变量值

javascript - 获取放置元素的项目/对象

javascript - 如何使用多个哈希?

javascript - 将 HandsonTable 连接到 MySQL 服务器