发表句子 - 信息未到达网络服务器

时间:2015-08-31 01:44:11

标签: python sockets

事情是我发送的信息(Alexis Ahumada 1990)永远不会停留在服务器日志上(www.inf.utfsm.cl/~mvaras/tarea1.log)我想知道什么我做错了。

#!/usr/bin/env python


import socket
import sys

HOST = 'www.inf.utfsm.cl'
GET = '/~mvaras/tarea1.php'
UA = 'tarea1'
PORT = 80

try:
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
  sys.stderr.write("[ERROR] %s\n" % msg[1])
  sys.exit(1)

try:
  sock.connect((HOST, PORT))
except socket.error, msg:
  sys.stderr.write("[ERROR] %s\n" % msg[1])
  sys.exit(2)

sock.send("GET %s HTTP/1.0\r\nHost: %s\r\n\r\nUser-Agent: %s\r\n\r\n" % (GET, HOST, UA))
sock.send("POST /~mvaras/tarea1.php HTTP/1.0 User-Agent:tarea1 Nombre=Alexis+Ahumada&rut=1990")


data = sock.recv(1024)
string = ""
while len(data):
  string = string + data
  data = sock.recv(1024)

    print string

    sys.exit(0)

1 个答案:

答案 0 :(得分:1)

您不能只是POST到服务器,您必须POST到URL。在您的GET请求中,您指定了/~mvaras/tarea1.php作为您的网址,但您没有将其指定为POST。

此外,您没有正确使用HTTP 1.1,因为您没有在the section 14 of the RFC上指定的Host标头

  

客户端必须在所有HTTP / 1.1请求消息中包含Host头字段。如果请求的URI不包含所请求服务的Internet主机名,则必须为Host头字段指定一个空值。

请注意,请注意,只有在您真正需要时才使用HTTP套接字。如果您只想获取一些HTTP数据,请使用更高级别的实现。