25

XSSテストを行うために特別なURLをリモートサーバーにリダイレクトする構文を探していました。何か案は?

import SimpleHTTPServer
import SocketServer

class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        print self.path 
        if self.path == '/analog':
-------------------->return "http://12b.dk/analog"???
        return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

theport = 1234
Handler = myHandler
pywebserver = SocketServer.TCPServer(("", theport), Handler)

print "Python based web server. Serving at port", theport
pywebserver.serve_forever()
4

5 に答える 5

26

Locationリダイレクトの場合、コード 301 とヘッダーを返す必要があります。おそらく、次のようなものを試すことができます:

class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):
       self.send_response(301)
       self.send_header('Location','http://www.example.com')
       self.end_headers()
于 2010-03-24T10:57:21.707 に答える
7

これは、このファイルをリダイレクトして保存し、Python プログラムとして実行するための完全なコードです。終了するには、ctrl + c.

import SimpleHTTPServer
import SocketServer
class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):
       print self.path
       self.send_response(301)
       new_path = '%s%s'%('http://newserver.com', self.path)
       self.send_header('Location', new_path)
       self.end_headers()

PORT = 8000
handler = SocketServer.TCPServer(("", PORT), myHandler)
print "serving at port 8000"
handler.serve_forever()
于 2014-03-04T20:08:18.980 に答える
5

他のタイプのリクエスト (POST など) をリダイレクトしようとしている場合は307301.

  • 301POST リクエストを送信した場合でも、GET リクエストでリダイレクトします
  • 307最初のリクエストに使用したのと同じ方法を使用します

GET および POST 要求をリダイレクトするコード例:

class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.redirect()
    def do_POST(self):
        self.redirect()
    def redirect(self):
        self.send_response(307)
        self.send_header('Location','http://www.example.com')
        self.end_headers()

: ステータス コードの使用は安全307ではない可能性があるため、すべての受信リクエストにこのステータス コードを使用することはお勧めしません。理想的には、安全であることがわかっているリクエストに対してのみ使用を制限することをお勧めします。

于 2018-05-30T15:01:45.880 に答える
1

HTTP ステータス コード 301 は、要求が完全に移動されたことを意味し、応答ヘッダー フィールドの場所に設定されている推奨 URI にリダイレクトする必要があります。ただし、ブラウザの実装によってはリダイレクトが発生します。

301 の代わりに 303 を返すことで、リクエストに対するレスポンスが他の URI で見つかることをブラウザに伝え、GET リクエストを別の URI にリダイレクトするようにブラウザを効果的に管理します。したがって、303 の方が適しています。

于 2014-11-07T08:29:49.323 に答える