【问题标题】:server code HTTP POST to the remote server - Django服务器代码 HTTP POST 到远程服务器 - Django
【发布时间】:2013-08-07 19:06:50
【问题描述】:

所以我正在尝试从 ajax 调用 api。我已经对本地 url 进行了 ajax 调用。现在我希望本地 url 进行 url 调用并返回返回的数据。 URL 是 RESTful。

$.ajax({
    type: 'POST',
    dataType: 'application/json',
    accept: 'application/json',
    async: false,
    username: 'username',
    password: 'password',
    url: '/postdata/',
    data: {
        "name": "Marcus0.7",
        "start": 500000,
        "end": 1361640526000
        },
    success: function(){alert('DONE!');},
    error:function(error){alert(error)},
    });

我试图调用的 api 是(在 python 中): 这就是我想要实现的服务器端我该怎么做?

r = requests.post('https//extenal.api' ,headers={'content-type': 'application/json'}, auth=auth, data=json.dumps(data))

在 Django 中:

views.py

def postdata(request):
    return render(request, 'livestream/postdata.html')

urls.py

    url(r'^postdata$', 'livestream.views.postdata')

谢谢

【问题讨论】:

  • 那么您面临的问题是什么?
  • 所以您想将 Ajax 发布到您的视图,然后将服务器端请求发布到外部 API?
  • 可以,因为ajax不能做跨域api调用。
  • 好的,那你有什么问题?你的问题没有给我们任何继续下去的信息。您可以根据服务器配置进行跨域请求/发布。
  • 我不知道如何从服务器发出请求/发布?我正在尝试弄清楚如何接收 ajax 调用并发布 api 调用。

标签: javascript jquery python ajax django


【解决方案1】:

Ajax 可以进行跨域调用,但其他域必须允许您使用 CORS 这样做。

但是,如果您真的只需要反映您自己域中的外部 API,您可以将您的 Web 服务器设置为反向代理外部 API 的相关端点。这将比通过 Django 代理更高效。您甚至可以使用您的网络服务器将身份验证详细信息添加到代理请求中。

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2013-07-13
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2014-11-18
    相关资源
    最近更新 更多