我正在使用带有角度前端的烧瓶服务器。直到最近,我还在本地运行该项目并且没有任何问题。
我现在将我的项目移动到远程服务器并收到以下错误。我不确定我做错了什么:
我的错误:
XMLHttpRequest 无法加载http://ec2-..../api/loginStatus/。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:8100 ”。响应具有 HTTP 状态代码 503。
我的烧瓶服务器端代码的片段(我将我的标头添加到响应中,如下所示):
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin','http://localhost:8100')
response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
response.headers.add('Access-Control-Allow-Credentials', 'true')
return response
我在前端 angularjs 中同时使用了 restangular 和 $http 方法。
我在主模块的 .config 中添加了以下几行:
.config(['RestangularProvider', '$stateProvider', '$urlRouterProvider','$httpProvider',
function(RestangularProvider, $stateProvider, $urlRouterProvider,$httpProvider) {
//$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = "http://localhost:8100";
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.headers.common = 'Content-Type: application/json';
delete $httpProvider.defaults.headers.common['X-Requested-With'];
有人可以在这里帮助我吗?我参考了很多材料,但我不确定我做错了什么。
PS:我的服务器上收到 200 条状态消息。因此,我假设错误出现在我的前端,而不是我的服务器端。如果我错了请纠正我
问候, 苏尼尔
编辑
大家好,我已经解决了这个问题。我要感谢@Mathijs Segers 和@Hassan Mehmood 的投入。
事实证明,存在导致服务器不可用的 nginx 配置问题。
首先,为烧瓶后端创建的符号链接存在问题(我通过 /home/username 上的 git repo 运行服务器端,然后在 /var/www/sitename.com 上创建符号链接
我还限制了一秒钟内可以发送的请求数量(用户每 2 秒只能发送 1 个),导致 503 错误。
修复后我提出的原始代码运行良好。