使用jQuery的跨域请求(在Python中工作)

2024-04-26 05:59:31 发布

您现在位置:Python中文网/ 问答频道 /正文

这个Python代码运行得很好

print 'foo'
params = {'memberId': '1'}
data = urllib.urlencode(params)
url = 'http://aaa.bbb.com/ccc/'
req = urllib2.Request(url, data, {'Content-Type': 'application/json'})
f = urllib2.urlopen(req)
response = f.read()

print '===>', response

response = eval(response.decode('unicode-escape'))   
f.close()

我想知道对应的javascript代码是什么?我试过了,提醒“错误”。目前我在ddd.bbb.com网站. web服务已打开aaa.bbb.com网站. 我不能为这个设置相对路径。在

请建议如何配置跨域。谢谢。在

^{pr2}$

Tags: comurldatafoo网站responseparamsurllib2
1条回答
网友
1楼 · 发布于 2024-04-26 05:59:31

关于Javascript的“同源策略”,还有大约一个gajillion(这是我的技术估计;-)的其他堆栈溢出问题,以及如何解决它。我强烈建议你去看看。在

简而言之,您的基本选择是:

  1. 使用JSONP(只有在aaa.bbb.com网站支持JSONP)
  2. 得到aaa.bbb.com网站添加ddd.bbb.com网站它是“安全列表”(有一个更好的说法,但我忘了);如果你控制bbaaa.com网站这可能是你最好的选择
  3. 如果您不能执行上述任一操作,请设置一个代理服务(只有Apache可以处理此问题)来转发ddd.bbb.com/someUrl到aaa.bbb.com网站,这样浏览器就认为你在访问自己的域,但实际上内容来自其他地方。在

为了让你理解核心问题,关键是浏览器不允许代码从evildomain.com网站访问yourbank.com网站,作为安全防范措施。但是,浏览器允许您从yourbank.com网站,不管您的来源是什么,所以您可以使用名为JSONP的东西来利用它。。。但对于JSONP来说yourbank.com网站必须支持它(他们必须为您定制脚本)。在

浏览器也可以让你访问yourbank.com网站如果yourbank.com网站明确地说“如果evildomain.com网站搞砸了我们”。他们把一个特殊的文件放在他们网站的一个特别的地方(我忘记了细节,但他们很容易查找)。在

如果你两个都做不到,你可以evildomain.com网站要转到的服务器yourbank.com网站为你。服务器与浏览器不受同样的限制,因此它们可以访问任何想要的站点。当它这样做时,它可以将它在那里找到的内容发送给您,这就是所谓的“代理”(toyourbank.com网站通过evildomain.com网站,这是代理的结束)。在

希望这能澄清一些问题。在

相关问题 更多 >