不允许使用 GET405 方法(JavaScript 和 Flask)

Posted

技术标签:

【中文标题】不允许使用 GET405 方法(JavaScript 和 Flask)【英文标题】:GET405 method not allowed (JavaScript and Flask) 【发布时间】:2019-06-23 18:10:47 【问题描述】:

我正在开始一个与 Flask 服务器交互的 javascript 开发。当我提出请求(post 或 get)时,我总是遇到 405 method not allowed 错误。

这是我的 JavaScript 代码:

        fetch('http://127.0.0.1:5053/api/prediction_lime').then(function (response) 
        const contentType = response.headers.get("content-type");
        if (contentType && contentType.indexOf("application/json") !== -1) 
            if (response.ok) 
                response.json().then(function (json) 
                app.showOneResult(0, json);
            )
        
    
        )

还有我的 Flask 的 Python 代码:

import flask
from flask import Flask, render_template, jsonify, request,send_file
from flask_cors import CORS, cross_origin
import numpy as np
import json
import os
#import pandas

print(flask.__version__)

app = Flask(__name__,template_folder='.')
CORS(app, origins="http://127.0.0.1:8080", allow_headers=[
    "Content-Type", "Authorization", "Access-Control-Allow-Credentials"],
    supports_credentials=True)



@app.route('/', methods=['POST'])
def index():
    return render_template('index.html')

@app.route('/api/predictions',methods=['POST'])
def predictions():
    # Cette fonction
    params = request.get_json(force=True)
    print(params)
    with open('predictions.json', encoding='utf8') as f:
        data = json.load(f)
        return jsonify(data)

@app.route('/api/prediction_lime',methods=['POST'])
def prediction():
    # Cette fonction
    params = request.get_json(force=True)
    print(params)
    with open('prediction_lime.json', encoding='utf8') as f:
        data = json.load(f)
        return jsonify(data)

我已经阅读了很多论坛,但没有任何效果...

非常感谢。

【问题讨论】:

您的 JavaScript 代码缺少实际发送请求的组成部分。请添加。 这通常发生在您发送的 HTTP 方法不支持您请求的路由时。如果请求正确发送并发送到正确的路由,请检查 chome 开发者工具 > 网络 是的,发送的请求是正确的,它发布了json文件。 【参考方案1】:

Fetch 默认使用 GET 请求。

您的烧瓶应用仅接受该端点上的 POST。告诉 fetch 改为 POST 到端点。

fetch('http://127.0.0.1:5053/api/prediction_lime', 
        method: "POST"
        )

阅读更多MDN

【讨论】:

以上是关于不允许使用 GET405 方法(JavaScript 和 Flask)的主要内容,如果未能解决你的问题,请参考以下文章

WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法

HTTP 错误 405.0 - 不允许使用 Jquery ajax get 的方法

WebApi Post 方法总是返回“请求的资源不支持 http 方法 'GET'。”状态:405 方法不允许

AngularJS:$http.get 405(不允许的方法)

Laravel 5.4 错误 405 方法不允许错误

Angular:HTTP GET 请求 - OPTIONS 405(不允许的方法)