前言
創(chuàng)新互聯(lián)建站致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、成都小程序開發(fā)、公眾號商城、等建站開發(fā),創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。本文將從實踐角度介紹如何使用jsonp和代理服務(wù)器方案解決跨域問題,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
瀏覽器為了保護用戶安全,引入了同源策略,即一個服務(wù)器頁面無法訪問另一個協(xié)議、域名、端口不同的服務(wù)器數(shù)據(jù)。當頁面需要跨服務(wù)器訪問另一個服務(wù)器的數(shù)據(jù)時,即產(chǎn)生跨域行為。以豆瓣的公開API(https://api.douban.com/v2/book/1220562)為例,當前我的服務(wù)器處于http://127.0.0.1:5000下,豆瓣的服務(wù)器很顯然跟我的服務(wù)器不同源,服務(wù)器中的一個頁面通過AJAX請求該接口時,瀏覽器會發(fā)出如下警告,并且頁面獲取數(shù)據(jù)失敗:
在實際開發(fā)中,如果遇到這樣的跨域問題,可以通過以下辦法獲得跨域的數(shù)據(jù):
對于第一種設(shè)置Access-Control-Allow-Origin的方法,如果在Python Flask搭建的服務(wù)器下,可以設(shè)置一個簡單的修飾器:
from functools import wraps from flask import make_response def allow_cross_domain(fun): @wraps(fun) def wrapper_fun(*args, **kwargs): rst = make_response(fun(*args, **kwargs)) rst.headers['Access-Control-Allow-Origin'] = '*' rst.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE' allow_headers = "Referer,Accept,Origin,User-Agent" rst.headers['Access-Control-Allow-Headers'] = allow_headers return rst return wrapper_fun @app.route('/hosts/') @allow_cross_domain def domains(): pass
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。