Http服务设置跨域请求
跨域是什么就不在此进行赘述了, 百度一下,你就知道。
flask的处理方法
flask中处理跨域很简单, 只需要在flask的app对象中注册函数处理:
app.after_request(after_request)
其中的after_request
即为处理跨域的函数, 当请求处理完成,还未响应给客户端之前,flask会调用这个函数。
def after_request(resp):
"""响应返回客户端前的钩子函数, 该函数用于保证跨域能够正常
Args:
resp (object): 响应
Returns:
resp: 修改后的响应
"""
resp = make_response(resp)
resp.headers['Access-Control-Allow-Origin'] = '*'
resp.headers['Access-Control-Allow-Methods'] = 'GET,POST'
resp.headers['Access-Control-Allow-Headers'] = 'x-requested-with,content-type'
return resp
以上代码加装饰器@app.after_request
可以达到同样效果, 如果以装饰器方式, 则无需调用app.after_request(after_request)
。
http.server的处理方法
http.server
为python预置库, 只需提供一个RequestHandler给到TCPServer
对象。处理跨域核心代码在end_headers
中。
import os
import sys
import http.server
import socketserver
class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Access-Control-Allow-Origin', '*')
self.send_header('Access-Control-Allow-Methods', 'GET,POST')
self.send_header('Access-Control-Allow-Headers', 'x-requested-with,content-type')
http.server.SimpleHTTPRequestHandler.end_headers(self)
def server(port):
httpd = socketserver.TCPServer(('', port), HTTPRequestHandler)
return httpd
标签:Control,Http,跨域,Python,resp,after,request,Access
From: https://www.cnblogs.com/quenwaz/p/17861079.html