欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)跨域代理服務(wù)器的方法

 更新時(shí)間:2023年07月17日 15:28:50   作者:銘  
這篇文章主要介紹了python實(shí)現(xiàn)跨域代理服務(wù)器的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
  • 準(zhǔn)備環(huán)境
  • python3.7+
  • 依賴:aiohttp
  • 代碼實(shí)現(xiàn)(代理服務(wù)器,返回響應(yīng)體和進(jìn)行跨域處理后的headers)
import aiohttp
from functools import wraps
from aiohttp import web
corscode = {
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'GET, POST, OPTIONS', # 需要限制請(qǐng)求就在這里增刪
                'Access-Control-Allow-Headers': '*',
                'Server':'is my server',
            }
# 實(shí)例化路由
routes = web.RouteTableDef()
# 異步j(luò)son序列化
def jsondump(func):
    @wraps(func)
    async def wrapper(*args,**kwargs):
        result = await func(*args,**kwargs)
        try:
            return json.dumps(result ,ensure_ascii=False)
        except:
            return result
    return wrapper
# 封裝一下web.json_resp
# def wj(dt):
#    return web.json_response(dt)
wj = lambda dt: web.json_response(dt)
# 處理OPTIONS和跨域的中間件
@jsondump
async def options_middleware(app, handler):
    async def middleware(request):
        # 處理 OPTIONS 請(qǐng)求,直接返回空數(shù)據(jù)和允許跨域的 header
        if request.method == 'OPTIONS':
            return web.Response(headers=corscode)
        # 繼續(xù)處理其他請(qǐng)求
        response = await handler(request)
        # 為每次響應(yīng)添加header
        try:
            response.headers.update(corscode)
        except Exception as e:
            return response
        return response
    return middleware
@jsondump
@routes.view(r'/get')
async def geturl(request): 
    url = request.query.get('url')
    if not url:
        return wj({"data":"參數(shù)錯(cuò)誤"})
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            # 檢查請(qǐng)求是否成功,如果不成功,可以根據(jù)需要進(jìn)行處理
            if response.status == 200:
                file = await response.read()
                return web.Response(body=file, headers=response.headers)
if __name__ == '__main__':
    app = web.Application()
    app.add_routes(routes)
    app.middlewares.append(options_middleware)
    web.run_app(app)
  • 測(cè)試

1.寫個(gè)get的方法

function downloadfile(url, fileName) {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url, true);
  xhr.responseType = 'blob';
  xhr.onload = function() {
    if (xhr.status === 200) {
      var blob = xhr.response;
      var a = document.createElement('a');
      var url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = fileName;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      window.URL.revokeObjectURL(url);
    }
  };
  xhr.send();
}

2.下載測(cè)試

downloadfile(url, fileName)

3.結(jié)果

可以正常下載
并且在響應(yīng)頭中能看到Server:is my server
同時(shí)可以看到添加成功的Allow-Origin響應(yīng)頭

到此這篇關(guān)于python實(shí)現(xiàn)跨域代理服務(wù)器的文章就介紹到這了,更多相關(guān)python跨域代理服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python裝飾器初探(推薦)

    python裝飾器初探(推薦)

    下面小編就為大家?guī)硪黄猵ython裝飾器初探(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • Pandas實(shí)現(xiàn)批量拆分與合并Excel的示例代碼

    Pandas實(shí)現(xiàn)批量拆分與合并Excel的示例代碼

    這篇文章主要為大家詳細(xì)講講如何利用python Pandas實(shí)現(xiàn)批量拆分與合并Excel,文中有非常詳細(xì)的的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下
    2022-05-05
  • 如何使用Python中的正則表達(dá)式處理html文件

    如何使用Python中的正則表達(dá)式處理html文件

    html類型的文本數(shù)據(jù)內(nèi)容是由前端代碼書寫的標(biāo)簽+文本數(shù)據(jù)的格式,可以直接在chrome瀏覽器打開,清楚的展示出文本的格式,下面這篇文章主要給大家介紹了關(guān)于如何使用Python中的正則表達(dá)式處理html文件的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Python如何將兩個(gè)Excel文件按相同字段合并到一起

    Python如何將兩個(gè)Excel文件按相同字段合并到一起

    文章介紹了如何使用Pandas工具將兩個(gè)關(guān)聯(lián)的Excel文件合并成一個(gè),首先創(chuàng)建兩個(gè)Excel文件test1和test2,然后使用Pandas進(jìn)行合并,最后顯示新創(chuàng)建的Excel文件
    2025-02-02
  • pandas根據(jù)指定條件篩選數(shù)據(jù)的實(shí)現(xiàn)示例

    pandas根據(jù)指定條件篩選數(shù)據(jù)的實(shí)現(xiàn)示例

    條件篩選是pandas中非常重要的一個(gè)功能,它允許我們根據(jù)特定條件來快速、高效地篩選數(shù)據(jù),本文主要介紹了pandas根據(jù)指定條件篩選數(shù)據(jù)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • python爬蟲入門教程--利用requests構(gòu)建知乎API(三)

    python爬蟲入門教程--利用requests構(gòu)建知乎API(三)

    這篇文章主要給大家介紹了關(guān)于python爬蟲入門之利用requests構(gòu)建知乎API的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Django項(xiàng)目創(chuàng)建及管理實(shí)現(xiàn)流程詳解

    Django項(xiàng)目創(chuàng)建及管理實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了Django項(xiàng)目創(chuàng)建及管理實(shí)現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法

    Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法

    在本篇文章里小編給大家整理了關(guān)于Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法,有需要的朋友們可以跟著學(xué)習(xí)下。
    2020-06-06
  • Python中True(真)和False(假)判斷詳解

    Python中True(真)和False(假)判斷詳解

    眾所周知True和False是一個(gè)布爾變量可取的值,下面這篇文章主要給大家介紹了關(guān)于Python中True(真)和False(假)判斷的相關(guān)資料,本文通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 使用Python實(shí)現(xiàn)檢測(cè)并刪除離群值

    使用Python實(shí)現(xiàn)檢測(cè)并刪除離群值

    離群值是一個(gè)數(shù)據(jù)項(xiàng)/對(duì)象,它明顯偏離其余的(所謂的正常)對(duì)象,本文主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)檢測(cè)并刪除離群值,感興趣的小伙伴可以了解下
    2024-01-01

最新評(píng)論