简体   繁体   English

所请求的网址不允许使用该方法

[英]The method is not allowed for the requested URL

Getting this error when I am accessing through Facebook messenger? 通过Facebook Messenger进行访问时出现此错误?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>

Here is code 这是代码

webapp 网络应用

from flask import Flask
from flask import request
from flask import render_template, redirect, url_for, request,jsonify,
app = Flask(__name__, template_folder='./')
@app.route('/')
def index():
    return render_template('index.html')

@app.route('/prediction', methods=['POST', 'GET'])
def prediction():
    if request.method == 'POST':
        if request.form != None and 'message' in request.form:
            msg = request.form['message']
            response =  pred(str(msg))
            return jsonify(response) 
    else:
        return render_template('index.html')

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

index.html index.html

<html>
<head>
    <title>Upload</title>
</head>
<body>
    <p1>
        Yooooo Tensorflow thoooo
    </p1>
<form action="{{ url_for('prediction') }}" method='POST' >
    <input type=text name="message" value="" maxlength="100">
    <input type="submit" value="submit" >
</form>
</body>
</html>

I am trying to run through Facebook messenger which I am connecting using heroku 我试图通过我使用heroku连接的Facebook Messenger运行

Since both POST and GET are enabled in your view, this is most likely a CORS error 由于您的视图中同时启用了POST和GET,因此很可能是CORS错误

Follow the instructions here to allow cross origin requests for apache 请按照此处的说明进行操作以允许针对Apache的跨源请求

Or here if your Web server is nginx 或者如果您的Web服务器是nginx,则在此处

For example, my apps hosted on ubuntu 16.04 using apache, i run 例如,我使用apache托管在ubuntu 16.04上的应用程序,我运行

sudo nano /etc/apache2/sites-available/000-default.conf

on the terminal 在终端上

I edit my servers configuration and add Header set Access-Control-Allow-Origin "*" to allow cross origin requests. 我编辑服务器配置,并添加标头集Access-Control-Allow-Origin“ *”以允许跨源请求。 The star is a wild card meaning I allow requests from any site, you can replace it with the sites you want to allow 星号是通配符,表示我允许来自任何网站的请求,您可以将其替换为要允许的网站

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    Header set Access-Control-Allow-Origin "*"
    #Include conf-available/serve-cgi-bin.conf
    WSGIScriptAlias / /var/www/html/myapp.wsgi
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.mysite.com [OR]
RewriteCond %{SERVER_NAME} =mysite.com.info
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Ignore the rewrite rules that redirects requests to my app to https. 忽略将请求重定向到我的应用程序到https的重写规则。 You only need to add Header set Access-Control-Allow-Origin "*" 您只需要添加标题集Access-Control-Allow-Origin“ *”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM