簡體   English   中英

jQuery的跨域請求(在Python中工作)

[英]Cross-domain requests with jQuery (working in 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。 我無法為此設置相對路徑。

請提供有關如何配置跨域的建議。 謝謝。

jQuery.ajax({
                        url: 'http://aaa.bbb.com/ccc',
                        type: 'GET',
                        contentType: "application/json",
                        dataType: "json",
                        data: {'memberId':'1'},
                        success: function (data) {
                            alert("ok");
                        },
                        error: function () {
                            alert("error");
                        }
                    });

關於Javascript的“相同來源策略”以及如何解決該問題,大約還有一兆億(這是我的技術估算;-))其他Stack Overflow問題。 我強烈建議您檢查一下。

快速摘要,您的基本選擇是:

  1. 使用JSONP(僅在aaa.bbb.com支持JSONP時有效)
  2. 獲取aaa.bbb.com,將ddd.bbb.com添加到“安全列表”中(有一個更好的詞,但我忘記了); 如果您控制aaa.bbb.com,這可能是您最好的選擇
  3. 如果您不能執行上述任一操作,請設置代理服務(僅Apache可以處理),將ddd.bbb.com/someUrl轉發到aaa.bbb.com,以便瀏覽器認為您正在訪問自己的域,但實際上內容來自其他地方。

正是為了使您了解核心問題,其要點是,作為安全預防措施,瀏覽器不允許來自evildomain.com的代碼訪問yourbank.com。 但是,無論您的來源是什么,瀏覽器都將允許您從yourbank.com檢索腳本,因此您可以使用稱為JSONP的東西來利用該腳本...但要使JSONP起作用,yourbank.com的所有者必須提供支持(必須為您量身定制腳本)。

如果yourbank.com明確說“如果evildomain.com與我們混為一談,這很酷”,瀏覽器也將允許您訪問yourbank.com。 他們通過將特殊文件放在站點上的特殊位置來實現此目的(我忘記了細節,但是很容易查找)。

如果您不能執行上述任何一項操作,則只需讓您的evildomain.com服務器為您轉到yourbank.com。 服務器不受與瀏覽器相同的限制,因此它們可以訪問所需的任何站點。 完成后,它可以將您在其中找到的內容發送回給您,這就是所謂的“代理”(通過evildomain.com到yourbank.com,最后進行代理)。

希望這可以澄清一些問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM