我有一个在Django上运行的网站。当用户单击提交按钮时,我需要将数据发送到在不同域上运行的服务器,然后显示返回给用户的数据。由于跨域问题,我无法使用Ajax请求。很多消息来源建议我应该使用Javascript发送到我自己的服务器,然后发送到外部服务器,但我不知道如何实现它。
答案 0 :(得分:2)
如果您提交表单最终需要访问的URL,则可以在服务器端进行处理。所以说你在表单中包含一个隐藏字段,如下所示:
<input type="hidden" name="form_urlfield" value="http://anotherwebsite.com/wheretheformneedstogo">
基本上你可以这样做:
$.ajax({
type: "POST",
url: 'http://somewhereonthesameserver.com/submit-form',
data: $('#ajax-form').serialize(),
success: function(data){...},
});
然后,在与提交表单网址对应的视图中:
import urllib2
data = urllib2.urlopen(request.POST['form_urlfield'], the_post_data)
//the_post_data is the data that you want to post to the other server..
// do something with the returned data
// return a JSON/Other response
另外,请确保在Django中启用CSRF-Ajax功能。 https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/#csrf-ajax
以上所有内容都只是伪代码(我只是在这里写出来了......)但它应该让你知道如何继续。希望这会有所帮助:)
答案 1 :(得分:0)
您可以从django应用程序发出http请求。
答案 2 :(得分:0)
Ashray和dm03514提供的答案是正确的。但我可能会建议使用Requests代替urllib2进行服务器端HTTP处理。