【问题标题】:How to redirect to a different domain's url with post data如何使用发布数据重定向到不同域的 url
【发布时间】:2017-11-30 02:44:55
【问题描述】:

我有一个单页应用程序。首先,用户将 JSON 数据(amountuser 数据)发布到 Django 后端服务器(Buy view)上的 URL API。然后视图获取数量和用户数据以创建散列变量。最后,我想重定向到接受上述数据的不同域的 URL。

def Buy(request):
    key = 'some_key'
    txnid = 'some_id'
    amount = reques.data.get("amount")
    firstname = request.user.firstname
    surl = 'http://mysite.in/buy/success'
    furl = 'http://mysite.in/buy/fail'
    hash = ''
    salt = 'some_salt'
    hash_list = [key, txnid, str(amount), firstname, salt]
    hash_seq = "|".join(hash_list)
    hashed = hashlib.sha512(hash_seq)
    hashed_hexdigest_lower = hashed.hexdigest().lower()
    data = {
        "key": key,
        "txnid": txnid,
        "amount": amount,
        "firstname": firstname,
        "surl": surl,
        "furl": furl,
        "HASH": hashed_hexdigest_lower
    }
    url = "https://test.site.in/payment"
    return redirect(url, kwargs=data)

基本上,当重定向发生时,我想将上述数据发布到该 URL,就像提交表单一样。我如何在 Django 中做到这一点?

【问题讨论】:

  • 发布请求重定向时重定向用户的意义何在。只需向服务器上的 url test.site.in/payment 发送数据请求,无论响应是什么,您都将其返回给用户
  • @ArpitSolanki 是的,这就是这里的问题。 URL (test.site.in/payment) 是一个不同的域,而不是来自我的服务器。这是我正在使用的另一家公司的支付网关 API。
  • 使用请求库之类的东西向其他域发出请求
  • @ArpitSolanki 是的,但我需要在用户的浏览器中打开它,以便用户可以输入付款凭据。如何使用requests 做到这一点?
  • 如果用户正在输入他的付款凭据,那么您通过向该服务器发送带有用户数据的发布请求来尝试做什么。如果用户要查看该页面,那么它应该是向支付网站发出的获取请求,该请求将向他显示该页面。

标签: django django-views


【解决方案1】:

如果是 SPA,则将数据保存在 localStoragesessionStorage 中,并在定向后从新视图中访问。

重定向前的旧视图,

localStorage.setItem('myData',data);

重定向后的新视图,

var data = localStorage.getItem('myData');
localStorage.removeItem('myData');

【讨论】:

  • 对不起,我猜你没听懂我的问题。实际上,当用户向我的 URL api (Buy view) 发布(金额,名称)时,我将获取该数据(金额,名称),并使用它来创建散列 str。最后,我想重定向到接受上述数据的发布请求的不同域的 URL。
  • 如果您的应用程序是 SPA 并且两个视图都是该 SPA 的一部分,那么我想这是不可能的。如果另一个视图不是 SPA 的一部分,那么您可能可以在新视图的响应标头中发送数据。
猜你喜欢
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 2011-08-28
  • 1970-01-01
相关资源
最近更新 更多