解决C++的HTTPLIB库的跨域访问与OPTIONS的问题

想直接要结果的直接拉到文章底部就足够了

今天心血来潮想写个简易的API,想几个请求头token做一下验证 

于是吟诗一首(

这是后端

直接访问API检测一下能不能用

成功是可用的!

这是前端

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>CORS</title>
		<script src="js/vue.global.js"></script>
		<script src="js/axios.min.js"></script>
    </head>
    <body>
		<div id="app">
			{{ data }}
		</div>
		<script>
			Vue.createApp({
			mounted(){
				const config = {
				  headers:{
					"token": "can can need"
				  },
				  timeout: 1000
				};
			
                // 这个公网IP是假的(
				axios.get("http://11.45.1.4:8090/test", config)
					 .then(result => {
						 this.data=result.data.message;
					 }).catch(err => {
						console.log(err)
					 })

			},
			data(){
				return {
					data: undefined
				}
			}
			}).mount("#app")
		</script>
	</body>
</html>

 不错看上去没有什么毛病

让我打开前端看看能不能用

一瞬心肺停止了 ,不过这难不倒我,修改一下代码(黑色方框内为新增的)

 编译一下等待通过,然后再打开一下前端检测一下

意料之中依旧是爆炸了

检查了一下是没有找到OPTIONS的/test的

这样就明白了啊!

最后更改一下

// HTTP
#define CPPHTTPLIB_OPENSSL_SUPPORT
httplib::Server svr;

//启动HTTP服务器
inline void startServer(void) {
    auto ret = svr.set_mount_point("/", "./static");

    svr.set_default_headers({
        { "Access-Control-Allow-Origin" , "*" },
        { "Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"},
        { "Access-Control-Max-Age", "3600"},
        { "Access-Control-Allow-Headers", "*"},
        { "Content-Type", "application/json;charset=utf-8"}
        });


    svr.Options("/test", [](const httplib::Request& ,httplib::Response& resp) {
        std::cout << "OPTIONS ACCESS" << std::endl;
        resp.status = 200;
        });

    svr.Get("/test", [](const httplib::Request& req, httplib::Response& resp) {
        auto token{ req.get_header_value("token") };
        std::cout << token << std::endl;
        resp.set_content(R"-({"message":"Hello World!"})-", "application/json");
        });

    svr.listen("0.0.0.0", 8090);
}

再打开前端看看

好耶可以获取到API了 

哦对不能忘记看看后台有没有内容

也有内容那就是成功了!

问题解决了,ummmm,接下来应该奖励自己摸一会鱼了吧……!

———————本文完———————

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值