1
ユーザの選択に基づいてCGIスクリプトを実行するpython/tkプログラムがあります。私はちょうど1つの特定のcgiスクリプトに焦点を絞った小さなスクリプトにこれをカットするように取り組んでいます。セッションIDを正しく取得しているようですが、ブラウザを起動すると「アクセス拒否」が発生し続けます。他のプログラムが動作するので、私はウェブサイトからの問題を期待していません。どんな助けもありがとう。有効なセッションIDを受け取った後にアクセスが拒否される
UPDATE: 私はデバッガを使用し、下図のように、ライン印刷URLコンソールに印刷されたURLにブレークポイントを設定した場合は、作業を行います。私は今、セッションIDトークンが良いことを知っています。また
ウェブブラウザ機能とかけてステップへのI ステップであればスクリプトでも働くことの後。
ここに私のコードです。
import json
import tornado.web
import tornado.websocket
from tornado import gen
import tornado.ioloop
import webbrowser
from struct import *
request_id = 71
ip_address = "10.22.4.14"
# ************************************************
# Procedure to open websocket and get session id
# ***********************************************
@gen.coroutine
def open_ws(ip, username, password):
global client
global request_id
global session_id
ws_url = "ws://" + ip + ":7011/"
try:
client = yield tornado.websocket.websocket_connect(ws_url, None, None, 5, None, None)
# print("websocket %s open" % ws_url)
except error:
exit()
# Send Mercury login request
JSON = '{"requests":[{"request_id": %s, "login":{"username": "%s","password": "%s"}}]}' % (str(request_id), username, password)
client.write_message(JSON)
results = yield client.read_message()
# print("msg is %s" % results)
# Parse the response of login request to get the error code
parsed_json = json.loads(results)
err_code = parsed_json['responses'][0]['request_response']['result']['err_code']
if 0 == err_code:
# Parse the response of get_command_result to get the session id
session_id = parsed_json['responses'][0]['request_response']['login']['session_id']
# print("login succeeded - session id: %s" % session_id)
else:
print("login failed")
# error_exit(err_code)
def get_token():
tornado.ioloop.IOLoop.instance().run_sync(lambda: open_ws(ip_address, 'admin', 'admin'))
return session_id
session_id = get_token()
print "Token is " + session_id
url = "http://" + ip_address + "/scripts/dostuff.cgi?session=" + session_id
print url # add breakpoint here
# launch browser
webbrowser.open(url)
コンソール出力:
Token is 7zNSZX9liaUDFFN0ijn-LWQ8
http://10.222.4.14/scripts/dostuff.cgi?session=7zNSZX9liaUDFFN0ijn-LWQ8
ウェブサーバーはセッションIDと共にクッキーを期待していますか?または、セッションIDがクエリ文字列ではなくクッキーとして配信されることを期待していますか? –
いいえ。これは完全に動作するpython/tkアプリケーションで使われている形式です。 –