2017-12-29 8 views
0

Stack Overflow 전체를 조사했지만이 질문에 대한 답변을 찾지 못했습니다.Python-Requests, 동적으로 URL을받는 방법?

어떻게 파이썬 스크립트가 javascript 함수 호출을 기반으로 동적으로 URL을받을 수 있습니까? 나는 동적으로 파이썬 파일의 이름 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을 이용하여 수신하여 자바 스크립트 요청에 대한 간단한 백엔드이며, 프런트 엔드 (JS 측)와 통신 할 수 없습니다,이 작업을 수행하는 프레임 워크를 사용하는 어떤 네트워크/소켓 기능을 혼자 파이썬 스크립트를 필요

다음은 클라이언트에서 POST 요청을 받고 필요한 로직을 수행하는 간단한 구현입니다. 업데이트 된 URL은 호출 코드로 반환됩니다.

참고 요청이 POST이고 데이터는

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) 

당신은 컬

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

오른쪽에 저를 가리키는 주셔서 감사합니다 사용 간단하여 테스트 할 수 있습니다 토큰 및 URL을 JSON입니다 방향. Flask 프레임 워크를 사용하여 수신 URL을 라우팅했습니다. 다른 사람을 위해, 동일한 곤경에서 당신이 십자가 영역 URL에서 URL을 부르는 경우에 당신은 또한 크로스 도메인 외침을 허용 할 필요가있다. 이 게시물은 나를 도왔습니다 : https://stackoverflow.com/questions/7023052/configure-flask-dev-server-to-be-visible-across-the-network –

관련 문제