写出一个在windows上vscode中实现post提交控制led灯开关的前端代码,但是现在要从windos的前端代码中发送请求让在树莓派的后端代码接收到这个前端发出的post请求,该怎么实现这个跨域访问?请给出代码
时间: 2024-03-04 10:54:19 浏览: 76
C和C++项目源码Clion上创建的linux socket网络编程远程控制树莓派的led灯.zip
如果你想在Windows上使用VSCode编写前端代码并向树莓派发起POST请求,需要在前端代码中使用Ajax或Fetch等HTTP客户端库来发送POST请求。同时,你需要在树莓派上搭建后端服务来接收前端发出的请求。由于跨域访问的限制,你需要在树莓派上设置允许跨域访问的HTTP响应头。
以下是一个简单的例子,演示如何使用jQuery发送POST请求,以及如何在Python Flask中设置允许跨域访问的响应头:
Windows前端代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Control LED</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<h1>Control LED</h1>
<button id="btnOn">LED ON</button>
<button id="btnOff">LED OFF</button>
<script>
$(document).ready(function(){
$("#btnOn").click(function(){
$.ajax({
url: "http://raspberrypi.local:5000/led",
type: "POST",
data: JSON.stringify({state: "on"}),
contentType: "application/json",
success: function(data) {
console.log(data);
}
});
});
$("#btnOff").click(function(){
$.ajax({
url: "http://raspberrypi.local:5000/led",
type: "POST",
data: JSON.stringify({state: "off"}),
contentType: "application/json",
success: function(data) {
console.log(data);
}
});
});
});
</script>
</body>
</html>
```
在上述代码中,我们使用jQuery库来发送POST请求。当用户点击“LED ON”按钮时,发送一个POST请求到http://raspberrypi.local:5000/led,请求体为{state: "on"};当用户点击“LED OFF”按钮时,发送一个POST请求到http://raspberrypi.local:5000/led,请求体为{state: "off"}。
树莓派后端代码(使用Python Flask):
```python
from flask import Flask, request, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/led', methods=['POST'])
def control_led():
data = request.get_json()
state = data['state']
print('LED state:', state)
return jsonify({'status': 'ok'})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
```
在上述代码中,我们使用Python Flask框架来搭建后端服务。当收到POST请求时,从请求体中获取LED状态,并将其打印到控制台。同时,我们使用flask_cors库来设置允许跨域访问的响应头。
在运行上述代码之前,需要在树莓派上安装Flask和flask_cors库:
```
pip install flask flask_cors
```
最后,我们需要在树莓派上运行上述代码,并确保Windows上的前端代码可以访问到树莓派的IP地址和端口号。如果你的树莓派和Windows机器在同一个局域网中,可以使用树莓派的`hostname.local`域名来代替IP地址。
阅读全文