微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我在烧瓶中得到 [OPTIONS] 方法而不是 [POST]

如何解决我在烧瓶中得到 [OPTIONS] 方法而不是 [POST]

我正在从 angular 调用 API 到烧瓶。在烧瓶中,我得到的是 [OPTIONS] 而不是 [POST]。 如果我两次调用相同的 API,烧瓶会将其识别为 [POST] 方法

这是烧瓶代码

import numpy as np
import pickle

from flask import Flask,request,redirect
from flask.json import jsonify
from flask_sqlalchemy import sqlAlchemy
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app,resources={r"*": {"origins": "*"}})

app.secret_key = "Secret Key"
model = pickle.load(open('model.pkl','rb'))

#API Calls
@app.route('/',methods=["GET"])
def index():
    if request.method == "GET":
        return jsonify(data="Hello World")

@app.route('/login',methods=['POST'])
def login():
    if request.method == 'POST':
        data = request.get_json()
        return jsonify(data),200

@app.route('/register',methods=["POST"])
def register():
    if request.method == 'POST':
        data = request.get_json()
        email = data["email"]
        username = data["displayName"]
        password = data["password"]
        res = {
            "result" : "success"
        }
        return jsonify(res),200

if __name__ == "__main__":
    app.run(debug=True)

这是 Angular 中的 API 服务:

export class ApiService {
  constructor(private http: HttpClient) {}

  getHeaders(method: string) {
    const token = localStorage.getItem("token");
    const headers: any = {};

    if (method === "post") {
      headers["Content-type"] = "application/json";
    }  

    return {
      headers: new HttpHeaders(headers),};
  }

  get(url: string) {
    const headers = this.getHeaders("get");
    return this.http.get(`${environment.apiUrl}${url}`,headers).toPromise();
  }

  post(url: string,payload: Object) {
    const headers = this.getHeaders("post");
    return this.http
      .post(`${environment.apiUrl}${url}`,payload,headers)
      .toPromise();
  }
}

这是我点击注册按钮时调用方法

constructor(private api: ApiService,private router: Router) {}

  ngOnInit(): void {}

  async register(email: string,password: string,passwordCheck: string,displayName: string) 
  {
    const newUser = {
      email,password,passwordCheck,displayName,};
    try {
      const result = await this.api.post("/register",newUser);
      console.log(result)
      this.router.navigate(["/login"]);
    } catch (err) {
      console.log(err);
    }
  }

烧瓶中的终端输出

127.0.0.1 - - [17/Jun/2021 09:48:14] "OPTIONS /register HTTP/1.1" 200 -
127.0.0.1 - - [17/Jun/2021 09:48:19] "POST /register HTTP/1.1" 200 -

“检查”中的“网络”选项卡: register

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?