Python Eve:请求的资源上不存在“AccessControlAllowOrigin”头

2024-10-03 02:39:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我用pythoneve框架编写了一个API。尝试从AngularJS应用程序访问API时,会显示如下错误:

XMLHttpRequest cannot load http://127.0.0.1:5000/user/jay3dec. Request header field Authorization is not allowed by Access-Control-Allow-Headers. 

为了纠正上述错误,我在设置.py在

^{pr2}$

现在,上述错误消失,控制台中显示新错误:

XMLHttpRequest cannot load http://127.0.0.1:5000/user/jay3dec. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. 

但是我已经在我的设置.py. 在

以下是angularjs代码:

    $scope.validate = function() {

    var encodedUserNameAndPassword = Base64.encode($scope.username + ':' + $scope.password);

    $http.defaults.headers.put = {
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
        'Access-Control-Allow-Headers': '*'
    };
    $http.defaults.headers.common['Authorization'] = 'Basic ' + encodedUserNameAndPassword;

    $http({
        method: 'GET',
        url: 'http://127.0.0.1:5000/user/jay3dec'
    }).
    success(function(data, status, headers, config) {
        console.log(data);
    }).
    error(function(data, status, headers, config) {
        alert(data);

    });
}

有人能指出问题出在哪里吗


Tags: apihttpdataaccessis错误functionorigin
3条回答

必须将eve配置为。在

X_DOMAINS = '*'
X_HEADERS = ['Authorization','Content-type']
and angular as 
$http.defaults.headers.common['Authorization'] = 'Basic ' + auth;

那是我的工作。在

Eve只有在以下情况下才会触发CORS响应

  • 请求包含一个Origin
  • X_DOMAIN已在配置文件中设置(settings.py

由于后一个条件似乎已经满足,所以我将确保该请求是一个正确的CORS请求,并且它包含一个Origin头。在

阅读以下评论后更新 我认为限制了邮递员的来源。试着用卷曲代替:

curl -H "Origin: http://example.com" --verbose http://localhost:5000

X_DOMAIN设置为*时,该请求应该返回如下内容:

^{pr2}$

如果这是有效的,那么服务器正在正确地处理CORS请求。然后,您可以根据需要调整X_HEADERS和其他CORS服务器端设置。在

FWIW,我也有类似的问题。在

然后我了解到,只有模式定义的api才能获得X\u DOMAINS头的效果。使用app = Eve(settings=blah)和{}这样的东西自己定义的api(如果有)将不受X\u DOMAINS头的影响。因此,在这种情况下,您需要编写自己的装饰器。在

相关问题 更多 >