web-dev-qa-db-ja.com

flaskの問題と不正なリクエスト

私は、jsonを使用してゲームサーバーからwebspaceにjsonデータを取得するために、かなりいいAPI​​を自分でプログラミングしていました。

angular私はこれを取得しています:127.0.0.1--[20/Mar/2018 17:07:33]コード400、メッセージBad request version( "▒ \x9c▒▒{▒ '\ x12 \x99▒▒▒\ xadH\x00\x00 \x14▒+▒/▒、▒0▒\x13▒\ x14\x00/\ x005\x00 ")127.0.0.1-- [20/Mar/2018 17:07:33] "▒\x9dtTc▒\x93▒4▒M▒▒▒▒▒\x9c▒▒{▒ '\x99▒▒▒▒H▒+▒/▒、▒0 ▒▒/ 5 "HTTPStatus.BAD_REQUEST-127.0.0.1--[20/Mar/2018 17:07:33]コード400、メッセージ不正なリクエスト構文( '\ x16\x03\x01 \x00▒\ x01\x00\x00\x9d\x03 \x03▒k、&▒▒ua\ x8c\x82\x17 \x05▒QwQ$▒0▒▒\x9f▒B1\ x98 \x19W▒▒▒▒\ x00\x00 \x14▒+▒/ ▒、▒0▒\x13▒\ x14\x00/\ x005\x00 ')127.0.0.1--[20/Mar/2018 17:07:33] "▒\x9d▒k、&▒▒ua\ x8c\x82▒QwQ$▒0▒▒\x9f▒B1\x98W▒▒▒▒▒+▒/▒、▒0▒▒/ 5 "HTTPStatus.BAD_REQUEST-127.0.0.1--[20/Mar/2018 17:07: 33]コード400、メッセージ不正なリクエスト構文( '\ x16\x03\x01 \x00▒\ x01\x00 \x00▒\ x03\x03)▒▒\ x1e \xa0▒\ t\r\x14g%▒▒\ x17 ▒▒\ x80\x8d}▒F▒▒\x08U▒ġ▒▒\x06▒\ x00\x00 \x1c▒+▒/▒、▒0▒ ')g%▒▒▒▒\ x80\x8d}▒F ▒U▒ġ▒▒▒▒+▒/▒、▒0▒ "HTTPStatus.BAD_REQUEST-

私のAPI

from flask import Flask, jsonify
from flaskext.mysql import MySQL
from flask_cors import CORS, cross_Origin

app = Flask(__name__)
CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
cors = CORS(app, resources={r"/punishments": {"origins": "http://localhost:5000" "*"}})
mysql = MySQL()

# MySQL configurations
app.config['MYSQL_DATABASE_USER'] = 'test'
app.config['MYSQL_DATABASE_PASSWORD'] = 'Biologie1'
app.config['MYSQL_DATABASE_DB'] = 'test'
app.config['MYSQL_DATABASE_Host'] = 'localhost'

mysql.init_app(app)

@app.route('/punishments', methods=['GET'])
@cross_Origin(origin='localhost:5000',headers=['Content- Type','Authorization'])
def get():
    cur = mysql.connect().cursor()
    cur.execute('''select * from test.punishments''')
    r = [dict((cur.description[i][0], value)
              for i, value in enumerate(row)) for row in cur.fetchall()]
    return jsonify({'punishments' : r})

if __name__ == '__main__':
    app.run()

私のクライアント機能

export class ApiUserService {

  private _postsURL = "https://localhost:5000/punishments";

  constructor(private http: HttpClient) {
  }

  getPosts(): Observable<Punishments[]> {

    let headers = new HttpHeaders();
    headers = headers.set('Content-Type', 'application/json; charset=utf-8');

    return this.http
      .get(this._postsURL,{
        headers: {'Content-Type':'application/json; charset=utf-8'}
      })
      .map((response: Response) => {
        return <Punishments[]>response.json();
      })
      .catch(this.handleError);
  }

  private handleError(error: Response) {
    return Observable.throw(error.statusText);
  }
}
7
Lars Erhardt

私はあなたと同じエラーがありました。

私のflaskサーバーはrespberry-pi内にインストールされ、https://ip:5000を使用してアクセスしようとしました。

問題は、httpsではなくhttpを使用していたことです。

http://ip:5000に変更すると、うまくいきました。

14
Prakash Pandey

最近私もこれに直面しましたが、問題は私のアプリのSSL構成にありました。私の。envでは、SSL_DISABLEFalseに設定してから、Trueに変更します。

SSL_DISABLE=FalseSSL_DISABLE=Trueに変更

つまり、ここでのポイントは次のとおりです。URLを確認します。たとえば、https://127.0.0.1:5000のように、http://127.0.0.1:5000に変更します。

それが将来この問題にも直面している誰かに役立つことを願っています。

1
Tri

私も同じ問題に直面しました

httpsではなくhttpのみを使用する:-

http://ip:portnumber
0
Mohammad Aarif