CORS错误(在Heroku上使用Flask,从Ionic应用程序请求)

时间:2018-07-09 00:06:03

标签: angular ionic-framework heroku flask cors

我正在做一个有关Ionic的学校项目,所以我决定为我的最初需求创建一个基本的API。我正在使用Flask,因为它非常简单,但是当涉及到GET请求时,我遇到了麻烦(在设置完所有内容并托管在Heroku上之后)。 这是API代码(我现在使用的是模拟文件而不是数据库,这是问题的根源吗?):

const lookup = {
  FELONY: 1,
  MISDEMEANOR: 2,
  ...
}

sort(... => (lookup[ab] + lookup[aa]).localeCompare(...))

这是请求代码(顺便说一下,它是Angular)

import os
from flask import Flask, send_from_directory
from flask_cors import CORS, cross_origin

app = Flask(__name__)
CORS(app)

@app.route('/')
def hello():
    return 'API do SIGNCLASS'

@app.route('/files/<path:file>')
@cross_origin()
def sendfile(file):
    return send_from_directory('files', file)

if __name__ == "__main__":
    port = int(os.environ.get("PORT", 5000))
    app.run(host='0.0.0.0', port=port)

如您所见,我已经设置了flask_cors,但是效果不好,我还是得到了:

public getCourse(courseId): Observable<Level[]> {
  const url = `${this.contentUrl}course${courseId}.json`;
  return this.http.get<Level[]>(url)
    .pipe(
        catchError(this.handleError('Obter níveis', []))
    );
}

编辑:我已经与邮递员检查过,在那里我可以找到:

Failed to load https://apiurlishere: No 
'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:8100' is therefore not allowed access.

所以我真的迷路了。

2 个答案:

答案 0 :(得分:0)

因此,我复制了大多数代码,并使用大写的“ METHODS”而不是@ app.route装饰器中的小写方法遇到了问题。

在烧瓶错误日志中,我看到了:

TypeError: __init__() got an unexpected keyword argument 'METHODS'

official docs在所有小写字母中都具有method关键字,因此我切换到小写字母,angular收到了http响应。

答案 1 :(得分:0)

编辑:好的,我应该在发布前对更多的东西进行测试 这适用于localhost,但不适用于Heroku。仍然迷路。

显然,正在发送响应,但没有标题。而且它不会显示在日志中。开始认为现在应该归咎于Heroku。

//////

哈哈,由于这个Solve Cross Origin Resource Sharing with Flask,我(不是真的)使它正常工作。因此,如果您通过Google到达这里,那就是好地方。

我的代码最终如下:

nameafile := 5; | psql.exe -h localhost -p 5432 -U postgres -d postgres

我觉得Postman有点误导。