Ajax實現(xiàn)跨域請求

由于同源策略的限制,考慮到安全因素,瀏覽器不能跨域去請求數(shù)據(jù)。當然如果有跨域請求數(shù)據(jù)的需求,也是可以實現(xiàn)的。實現(xiàn)如下(tornado+ajax):

Server side:

class CrossDomainTestHandler(RequestHandler):

    def get(self):
        callback = self.get_argument("callback", "")
        # Prepare data
        data = "test"
        result = callback + "(" + json.dumps({"data":data}) + ")"
        self.write(result)

注意點:獲取callback然后和需要返回的數(shù)據(jù)組裝成指定的形式

client side:

var url = "http://test.com";
    $.ajax({
        type: "GET",
        url: url,
        dataType: 'jsonp',
        data: {},
        success: function (resp_data) {
        // deal with resp data
        },
        error: function () {
            alert("系統(tǒng)出現(xiàn)錯誤,請稍后再試");
        }
    });

以上簡單的代碼就可以實現(xiàn)跨域請求數(shù)據(jù),但是跨越也會帶來危害的,涉及到敏感數(shù)據(jù)盡量不使用跨域

同源策略(Same-Origin Policy):所謂同源是指,域名,協(xié)議,端口相同。不同源的客戶端腳本(javascript、ActionScript)在沒明確授權(quán)的情況下,不能讀寫對方的資源。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容