跨域问题可以采用OPTIONS协议,在收到一方的OPTIONS请求之后,另一方应该设置好相应的headers。表示允许对应的服务的跨域请求。
1. cpprestsdk新增OPTIONS
m_listener.support(methods::OPTIONS, std::bind(&Command::handle_options, this, std::placeholders::_1));
2. OPTIONS方法添加headers
void Command::handle_options(http_request message)
{
http_response rep;
rep.headers().add(U("Access-Control-Allow-Origin"), U("*"));
rep.headers().add(U("Access-Control-Request-Method"), U("GET,POST,OPTIONS"));
rep.headers().add(U("Access-Control-Allow-Credentials"), U("true"));
rep.headers().add(U("Access-Control-Allow-Headers"), U("Content-Type,Access-Token,x-requested-with,Authorization"));
rep.set_status_code(status_codes::OK);
message.reply(rep);
}
建议添加上面的所有headers,因为一开始我只添加
Access-Control-Allow-Origin
这个,并没有效果。