当 运行 我本地服务器上的 2 个端口上有 2 个应用程序时,Access-Control-Allow-Origin 不允许来源 [URL]

Origin [URL] is not allowed by Access-Control-Allow-Origin when running 2 applications on 2 ports on my local server

我是 运行 一个 API 在我的本地服务器端口 8000 上。换句话说,127.0.0.1:8000/api returns JSON 方法获取时的数据。我知道这一点,因为如果我从其中一个视图发出 ajax 请求,我会得到正确的 return 数据。

现在,我正在尝试让这个 API 也能与第 3 方网站一起使用。所以我构建了另一个应用程序,并且 运行 它在端口 8080 上。换句话说,转到 127.0.0.1:8080 运行以下 JS 代码:

(function() {
    $.ajax({
        url: 'http://127.0.0.1:8000/api/',
        type: 'GET',
        dataType: 'json',
        headers: {
            'Access-Control-Allow-Origin': '*'
        },
        success: function( json ) {
            console.log('Success');
        },
        error: function( req, status, err ) {
            console.log(req + status + err);
        }
    });
})();

注意:我 运行 此代码在端口 8000 上使用 API 运行。但是,我在控制台中收到此错误:

[Error] XMLHttpRequest cannot load http://127.0.0.1:8000/api/. Origin http://127.0.0.1:8080 is not allowed by Access-Control-Allow-Origin.

这是怎么回事?我该如何解决这个问题,并在我的本地服务器上测试我的 API?任何帮助将不胜感激!

您遇到了 CORS 问题。这意味着您的浏览器正在保护您免受外部资源的侵害。根据您使用的 JS 框架,有一些解决方法。最常见的是 jsonp,它允许您创建跨域请求(参见 https://www.sitepoint.com/jsonp-examples/