2017-12-29 25 views
0

私はStack Overflow全体を見渡しましたが、この質問に対する答えは見つかりませんでした。Python-Requests、どのように動的にURLを受け取るのですか?

どのようにPythonスクリプトは、javascript関数呼び出しに基づいて動的にURLを受け取ることができますか?私は動的にPythonのファイルの名前はabc.pyだったと私はその後、 xhttp = new XMLHttpRequest();
を呼び出した場合(この場合にはハードコードされた)URLを受ける可能性がどのようにこのStack Overflow questionで例えば

、(コードは以下に再現) xhttp.open("GET", "abc.py?token=123", true);いくつかのhtmlファイルでjavascriptを使用していますか?

from urllib.parse import urlparse 
from urllib.parse import parse_qs 
from urllib.parse import urlencode 

url = 'http://example.com?param1=a&token=TOKEN_TO_REPLACE&param2=c' 

o = urlparse(url) 
query = parse_qs(o.query) 
if query.get('token'): 
    query['token'] = ['NEW_TOKEN', ] 
    new_query = urlencode(query, doseq=True) 
    url.split('?')[0] + '?' + new_query 

>>> http://example.com?param2=c&param1=a&token=NEW_TOKEN 

答えて

1

あなたは以下のbottle.pyを使用して、受信したJavaScriptの要求に簡単にバックエンドは、フロントエンド(JS側)と通信できませんでした、これを実行するためのフレームワークを使用していないネットワーク/ソケット機能を持つだけではPythonスクリプトを必要とします

ここでは、クライアントからPOSTリクエストを受け取り、必要なロジックを実行し、更新されたurlが呼び出しコードに返される単純な実装を示します。

注要求がPOSTであり、データはトークンとURL

from bottle import post, run, request 
import json 

from urllib.parse import urlparse 
from urllib.parse import parse_qs 
from urllib.parse import urlencode 


def replace_token(data): 
    url = data['url'] 
    token = data['token'] 
    o = urlparse(url) 
    query = parse_qs(o.query) 
    if query.get('token'): 
     query['token'] = [token] 
     new_query = urlencode(query, doseq=True) 
     return url.split('?')[0] + '?' + new_query 



@post('/token') 
def index(): 
    data = json.load(request.body) 
    return replace_token(data) 

run(host='localhost', port=8080, debug=True) 

とJSONのです次に、あなたはカール

curl -X POST http://localhost:8080/token -d '{"token":"NEW_TOKEN", "url":"http://example.com?param1=a&token=TOKEN_TO_REPLACE&param2=c"}' 
+0

を使用して簡単なことで、それをテストすることができ、右に私を指してくれてありがとう方向。 Flaskフレームワークを使用して受信URLをルーティングしました。他の人にとっては、同じ苦境で、クロスドメインURLからURLを呼び出す場合は、クロスドメインコールも許可する必要があります。この投稿は私を助けてくれました:https://stackoverflow.com/questions/7023052/configure-flask-dev-server-to-be-visible-across-the-network –

関連する問題