【问题标题】:Getting 400 errors only on some connections仅在某些连接上出现 400 错误
【发布时间】:2013-01-09 14:26:16
【问题描述】:

我正在创建一个 SublimeText 2 插件,它将数据发布到我运行的服务器。我在火车上使用手机作为 WiFi 热点编写了基础知识,一切正常。然后,当我回到家时,无论我尝试发布什么,我的服务器都会收到 400 Bad Request 响应。我把我的笔记本电脑放回我的个人热点,错误就消失了。详情如下:

本例中的“客户端”是 Sublime Text 2。如果您还不知道,他们的插件是用 Python 编写的,我使用 urllib、urllib2 和 httplib 来处理请求。以下是发出请求的相关 Python:

params = urllib.urlencode({'title': 'ST2 Note', 'content': data, 'user': user, 'pass': pswd})

headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}

conn = httplib.HTTPConnection("staging.myserver.me:80")

conn.request("POST", "staging.myserver.me/st2", params, headers)

response = conn.getresponse()

data2 = response.read()

print data2

conn.close()

上面的代码发送一个 POST 请求就好了。如果我在某个连接上,我的服务器肯定会理解它,因为我将它设置为只是回显我在 POST 数据中发送的内容。该请求是针对 PHP(Codeigniter)应用程序的一部分发出的,是的,我已经专门设置了它,以便为这个特定的 URL 关闭 CSRF 保护,所以我知道这不是问题。 PHP 代码本身相当无趣,但我将其设置为回显服务器标头,这就是当我从有效的连接发出请求时它发送的内容:

Host: staging.myserver.me
Accept-Encoding: identity
Content-Length: 56
Content-type: application/x-www-form-urlencoded
Accept: text/plain
Via: HTTP/1.1 akrmspsrvz9ts212.wnsnet.attws.com

任何想法为什么服务器可以理解来自某些连接的请求而不是其他连接?

【问题讨论】:

    标签: php python http-headers sublimetext2


    【解决方案1】:

    看起来我已经成功了。我知道还有其他人有我的问题,所以这就是发生的事情......

    由于我对 Python/HTTP1.1 新手太了解了,因此在它前面没有“http://”的计划主机名某些会起作用。必须与 ISP 以及它们如何路由流量有关,不确定。所以修复是修改这一行:

    conn.request("POST", "staging.myserver.me/st2", params, headers)
    

    以上行引起了问题。但改成这样:

    conn.request("POST", "http://staging.myserver.me/st2", params, headers)
    

    让它立即工作!我希望这可以帮助某人。有时,400 个错误几乎和 500 个错误一样神秘。

    【讨论】:

    • 回首往事,我为自己的回答感到尴尬。这是正确的,但现在知道为什么它的正确让我感到尴尬。
    猜你喜欢
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多