使用PsychicHttp.h库为Arduino配置Access-Control-Allow-Origin
解决PsychicHttp库下Arduino服务器的CORS跨域问题
针对你遇到的跨域报错,只需在PsychicHttp的请求处理回调中,通过request->response对象添加CORS响应头即可,修改后的代码示例如下:
server.on("/", HTTP_GET, [](PsychicRequest *request){ // 添加允许跨域的核心头部 request->response.addHeader("Access-Control-Allow-Origin", "*"); // 可选:添加更多CORS相关头部,覆盖预请求和复杂请求场景 // request->response.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); // request->response.addHeader("Access-Control-Allow-Headers", "Content-Type"); String output = "Hello world"; return request->reply(output.c_str()); });
另外,浏览器在发送复杂请求前会先发送OPTIONS预请求,建议额外添加一个OPTIONS请求的处理路由,确保预请求能得到正确响应:
server.on("/", HTTP_OPTIONS, [](PsychicRequest *request){ request->response.addHeader("Access-Control-Allow-Origin", "*"); request->response.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); request->response.addHeader("Access-Control-Allow-Headers", "Content-Type"); return request->reply(200); // 返回200状态码完成预请求响应 });
原理说明:PsychicHttp库中,PsychicRequest实例的response成员负责管理响应内容,调用它的addHeader方法就能自定义添加响应头,之后再调用reply方法发送响应即可。
内容的提问来源于stack exchange,提问作者Ariana Marta
相关产品推荐
相关产品推荐

