欢迎访问宙启技术站
智能推送

Python中使用BaseHTTPServer模块实现跨域请求的方法

发布时间:2023-12-24 07:24:57

在Python中使用BaseHTTPServer模块实现跨域请求主要通过设置相应的HTTP头信息来实现。以下是具体的步骤和示例代码:

1. 导入所需的模块

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

2. 创建一个自定义的请求处理类,并继承自BaseHTTPRequestHandler类

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        
        # 设置允许跨域请求的HTTP头信息
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
        self.send_header('Access-Control-Allow-Headers', 'origin, x-csrftoken, content-type, accept')

        self.end_headers()
        
        # 处理请求的逻辑,此处省略具体代码

        # 返回响应结果
        self.wfile.write('Hello World!')

        return

3. 创建一个HTTP服务器实例,并将自定义的请求处理类传入

server_address = ('', 8000)
httpd = HTTPServer(server_address, MyHandler)

4. 启动服务器

httpd.serve_forever()

完整的示例代码如下:

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        
        # 设置允许跨域请求的HTTP头信息
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
        self.send_header('Access-Control-Allow-Headers', 'origin, x-csrftoken, content-type, accept')

        self.end_headers()
        
        # 处理请求的逻辑,此处省略具体代码

        # 返回响应结果
        self.wfile.write('Hello World!')

        return

def main():
    server_address = ('', 8000)
    httpd = HTTPServer(server_address, MyHandler)
    print('Starting server on port 8000...')
    httpd.serve_forever()

if __name__ == '__main__':
    main()

以上代码实现了一个简单的HTTP服务器,并设置了允许跨域请求的HTTP头信息。你可以根据具体需求对代码进行修改和扩展,以适应不同的场景。