我正在使用flask,python和HTML编写一个web应用程序.我的问题是,第一次加载网页时,出现以下错误
错误请求浏览器(或代理)发送了此服务器无法理解的请求.
我可以通过"欺骗"首先运行它而不需要任何flask.request.form调用,然后将它们放回(下面的详细信息)中来最终加载页面.我的初始化必定会出错.我是新来的flask,并使用python与HTML.
假设我正在使用一个名为的目录example.我有一个调用的python脚本test.py和一个test.html使用以下目录结构调用的HTML模板:
\example\test.py
\example\templates\test.html
Run Code Online (Sandbox Code Playgroud)
我的python脚本test.py是:
import sys
import flask, flask.views
app = flask.Flask(__name__)
app.secret_key = "bacon"
class View(flask.views.MethodView):
def get(self):
result = flask.request.form['result']
return flask.render_template('test.html', result=result)
# return flask.render_template('test.html')
def post(self):
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
app.run()
Run Code Online (Sandbox Code Playgroud)
我的HTML test.html是
<html>
<head>
</head>
<body>
<form action="/" method="post">
Enter something into the box:
<input type="text" name="result"/><br>
<input type="submit" value="Execute!"/> …Run Code Online (Sandbox Code Playgroud) 我正在使用VS10及其asp.net开发服务器开发一个ASP.NET MVC 3博客应用程序,今天我遇到了"HTTP错误400 - 错误请求"错误,当我在带有这些字符的slug的博客帖子上请求时"不含25%2%2580%2599t".
我认为URL中允许使用"%"字符,例如,在StackOverflow上你有/sf/ask/tagged/c/%23,这个链接显示了用c#标记的所有问题.那么我的URL有什么区别,你如何修复它?谁能解释一下
非常感谢!
有人可以解释这个PHP代码有什么问题吗?(PHP版本5.3.5)
<?php
header('Bad Request', true, 400);
exit;
Run Code Online (Sandbox Code Playgroud)
我得到状态500而不是400.在apache错误日志中我得到
来自脚本的格式错误的标题 错误的标头=错误的请求:listener.php
我在这做错了什么?我误解了文档吗?
我现在正在接收
{"code": 400, "error_type": "OAuthException", "error_message": "No matching code found."}
Run Code Online (Sandbox Code Playgroud)
同时尝试在我们的某个服务器上获取用户的访问令牌.在使用REST Client Chrome扩展程序和我们的Web应用程序中,在一台特定服务器上进行此操作.
我能够从本地计算机和使用相同代码和扩展名的其他服务器接收用户的访问令牌.
我们的IP是否可以通过接收访问令牌被列入黑名单?还有其他人遇到过这个问题吗?
谢谢,
编辑
从Instagram支持回来,这是一个问题,并已修复.谢谢您的帮助.
我试图使用System.Web从服务器下载文件.它确实有效,但有些链接给我带来了麻烦.链接看起来像这样:
http://cdn.somesite.com/r1KH3Z%2FaMY6kLQ9Y4nVxYtlfrcewvKO9HLTCUBjU8IBAYnA3vzE1LGrkqMrR9Nh3jTMVFZzC7mxMBeNK5uY3nx5K0MjUaegM3crVpFNGk6a6TW6NJ3hnlvFuaugE65SQ4yM5754BM%2BLagqYvwvLAhG3DKU9SGUI54UAq3dwMDU%2BMl9lUO18hJF3OtzKiQfrC/the_file.ext
Run Code Online (Sandbox Code Playgroud)
代码看起来基本上是这样的:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link);
WebResponse response = request.getResponse();
Run Code Online (Sandbox Code Playgroud)
getResponse()始终抛出异常(错误400错误请求).但是,我知道该链接有效,因为我可以使用Firefox下载该文件而不会出现问题.
我也尝试用Uri.UnescapeDataString(链接)解码链接,但该链接甚至不能在Firefox中工作.
其他链接以这种方式完美地工作..只是这些不起作用.
好的,我发现了一些使用wireshark的东西:
如果我使用Firefox打开链接,则发送:
&ME3@"dM*PNyAo PA:]GET /r1KH3Z%2FaMY6kLQ9Y4nVxYp5DyNc49t5kJBybvjbcsJJZ0IUJBtBWCgri3zfTERQught6S8ws1a%2BCo0RS5w3KTmbL7i5yytRpn2QELEPUXZTGYWbAg5eyGO2yIIbmGOcFP41WdrFRFcfk4hAIyZ7rs4QgbudzcrJivrAaOTYkEnozqmdoSCCY8yb1i22YtEAV/epd_outpost_12adb.flv HTTP/1.1
Host: cdn.somesite.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
我认为只有第一行是问题,因为WebRequest.Create(link)解码了url:
&MEz.@!dM/nP9@~P>.GET /r1KH3Z/aMY6kLQ9Y4nVxYp5DyNc49t5kJBybvjbcsJJZ0IUJBtBWCgri3zfTERQught6S8ws1a%2BCo0RS5w3KTmbL7i5yytRpn2QELEPUXZTGYWbAg5eyGO2yIIbmGOcFP41WdrFRFcfk4hAIyZ7rs6Mmh1EsQQ4vJVYUwtbLBDNx9AwCHlWDfzfSWIHzaaIo/epd_outpost_12adb.flv HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
Host: cdn.somesite.com
Run Code Online (Sandbox Code Playgroud)
(%2F替换为/)
我发现Uri类自动解码url:Uri uri = new Uri(link); //链接未解码Debug.WriteLine(uri.ToString()); //链接在此解码.
我怎么能阻止这个?
在此先感谢您的帮助.
我正在尝试使用 axios 发表评论。当我提交在表单中输入的数据时,我在控制台中看到此错误:
\nAxiosError\xc2\xa0{message: \'请求失败,状态代码 400\',名称:\'AxiosError\',代码:\'ERR_BAD_REQUEST\',配置:{\xe2\x80\xa6},请求:XMLHttpRequest, \xc2\xa0\xe2\x80\xa6}
\n这是我的代码:
\nimport React, { useState } from \'react\'\nimport TextField from \'@material-ui/core/TextField\';\nimport { Button } from \'@material-ui/core\'\nimport CommentsAPI from \'../../Services/CommentsAPI\'\n\nexport default function CommentForm() {\n\n const [comment, setComment] = useState({})\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n try {\n const data = CommentsAPI.create(JSON.stringify(comment))\n console.log(data)\n } catch (error) {\n console.log(error)\n }\n }\n\n const handleChange = (event) => {\n const {name, value} = event.currentTarget\n setComment({\n ...comment,\n [name]: value\n })\n }\n\n return (\n <form …Run Code Online (Sandbox Code Playgroud) 出于某种原因,当请求通过非标准地址发送到HttpListener时,它返回
<h1>Bad Request (Invalid Hostname)</h1>
Run Code Online (Sandbox Code Playgroud)
示例包:
GET /index HTTP/1.1
Host: ::ffff:88.118.32.126:2548
Accept: */*
HTTP/1.1 400 Bad Request
Content-Type: text/html
Server: Microsoft-HTTPAPI/1.0
Date: Wed, 02 Feb 2011 19:05:18 GMT
Connection: close
Content-Length: 39
<h1>Bad Request (Invalid Hostname)</h1>
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
编辑: 这是我的代码
public class Server
{
private HttpListener Listener;
private Log Log;
public int Port = 1555;
public Server(Log _log)
{
Log = _log;
}
public void Start()
{
Listener = new HttpListener();
Listener.Prefixes.Add(string.Format("http://{0}:{1}/",
"88.118.32.126", Port));
Listener.Prefixes.Add(
string.Format("http://{0}:{1}/",
"*", Port)); //added these for …Run Code Online (Sandbox Code Playgroud) 我只是在我的webapp中手动实现了一个Facebook oauth2流。收到正确的access_token并尝试为用户数据调用图形api之后,我得到了400错误请求作为响应。
GET https://graph.facebook.com/me?accessToken=MY_CORRECT_TOKEN&fields=id,name,email
Run Code Online (Sandbox Code Playgroud)
当我在facebook提供的开发工具中使用完全相同的调用时,它会成功,但是当我尝试使用任何其他http客户端时,它将无法正常工作。我已经用curl,apache commons和其他一些http客户端尝试过了。
有没有人可以帮助我呢?
提前致谢
我已经google了很多搜索我的问题的答案没有运气所以,让我们尝试,如果别人可以帮助我.
在进行一些验证后,我有一个Web Api 2操作来注册用户.如果一切正常,它将返回序列化用户,如果没有,则返回BadRequest响应中发送的错误消息.
另一方面,我有一个WPF客户端调用API进行响应.
我的问题是我无法得到错误发送的原因,客户端只是得到Bad Request错误消息.
这是代码的一部分:
Web Api动作:
public async Task<IHttpActionResult> AddUser(NewUserDTO {
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (!model.IdCliente.HasValue)
{
ModelState.AddModelError("", "No existe el cliente");
return BadRequest(ModelState);
}
// do save stuff
return Ok(TheModelFactory.Create(user));
}
Run Code Online (Sandbox Code Playgroud)客户端功能:
public async Task<ApplicationUserDTO> AddUser(NewUserDTO dto) {
using (var client = new HttpClient()) {
client.BaseAddress = new Uri(_urlBase);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
HttpContent content = new StringContent(JsonConvert.SerializeObject(dto));
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage responseMessage = await client.PostAsync("api/accounts/AddUser", content); …Run Code Online (Sandbox Code Playgroud)我的 ASP.NET Core 3.1 应用程序中有一个控制器,该控制器BadRequest()在其中一种情况下返回。默认情况下它会生成 json 响应:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"traceId": "|492dbc28-4cf485d536d40917."
}
Run Code Online (Sandbox Code Playgroud)
这太棒了,但我想添加detail带有特定消息的字符串值。
当我返回时BadRequest("msg"),响应是纯文本msg。
当我这样做时BadRequest(new { Detail = "msg" }),响应是一个 json:
{
"detail": "msg"
}
Run Code Online (Sandbox Code Playgroud)
哪个更好,但我也想保留原始的 json 数据。
我的目标是返回这样的响应:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"detail": "msg",
"status": 400,
"traceId": "|492dbc28-4cf485d536d40917."
}
Run Code Online (Sandbox Code Playgroud)
有办法做到这一点吗?
bad-request ×10
c# ×4
asp.net-core ×1
axios ×1
curl ×1
flask ×1
html ×1
http ×1
http-headers ×1
httplistener ×1
instagram ×1
oauth ×1
oauth-2.0 ×1
php ×1
python ×1
reactjs ×1
response ×1
url ×1
webrequest ×1