Python前后端交互,前端发post前会发options预检请求,这是为什么?后端如何屏蔽options请求?或者另外一种方法,后端如何设置access-control-max-age,请给出示例代码
时间: 2024-04-16 13:26:52 浏览: 66
options请求是浏览器在发送跨域请求之前,先服务器发送的一种预检请求。它的作用是检查实际请求是否安全,以及服务器是否允许跨域请求。
为了屏蔽options请求,可以在后端代码中配置相应的响应头信息。下面是一个示例代码:
```python
from flask import Flask, request, Response
app = Flask(__name__)
@app.route('/', methods=['POST', 'OPTIONS'])
def handle_request():
if request.method == 'OPTIONS':
response = Response()
response.headers.add('Access-Control-Allow-Origin', '*')
response.headers.add('Access-Control-Allow-Headers', '*')
response.headers.add('Access-Control-Allow-Methods', '*')
response.headers.add('Access-Control-Max-Age', '3600')
return response
else:
# 处理实际的POST请求
# ...
if __name__ == '__main__':
app.run()
```
在上面的代码中,当接收到options请求时,我们创建一个空的响应对象,并设置了以下响应头信息:
- Access-Control-Allow-Origin:设置允许跨域访问的源,可以设置为具体的域名或使用通配符`*`表示允许任意域名访问。
- Access-Control-Allow-Headers:设置允许跨域请求携带的自定义请求头。
- Access-Control-Allow-Methods:设置允许跨域请求的方法。
- Access-Control-Max-Age:设置预检请求的有效期,单位为秒。
这样设置之后,当浏览器发送options请求时,服务器会返回相应的响应头信息,浏览器根据这些信息判断是否允许发送实际的跨域请求。
注意,以上示例是使用Flask框架实现的,如果你使用其他的Web框架,配置方式可能会有所不同。
阅读全文