rust actix_web解决跨域问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rust actix_web解决跨域问题相关的知识,希望对你有一定的参考价值。

参考技术A 在做Web服务时使用的是与主站 配置的是fb.net , 另外个成员列表服务是 m1.fb.net ,这会造成一个跨域问题。在浏览器下使用 XML Http Request 或者 fetch 发出一个HTTP请求,假如这个HTTP的协议、主机名或者端口任意一个与当前网页地址有不一致时,为了安全浏览器会限制响应结果,通常这类问题就是所谓的跨域问题。

可以参考: https://segmentfault.com/a/1190000012550346
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

解决跨域问题的方式有很多,比如 jsonp , iframe 等等。但在这里,我使用HTTP协议里约定的字段来解决这个问题,这也是最干净完美的解决方案。为了处理有跨域请求的特殊场景,HTTP协议里有一个特殊的响应头字段 Access-Control-Allow-Origin ,意思允许访问的 Origin ,值可以是通配符 * ,允许所有,或者写上一个具体的 Origin 值。

在 actix-web 里, 我们需要配合 actix_cors 来处理关于跨域请求的配置,以下是一个例子

Cargo.toml

main.rs

测试一下

如果我们把Origin换成另一个域名,则会报错

400出错了,提示

不允许的Origin请求,另外http和https视为不同的origin,都需要添加支持。

如果你需要允许所有的 Origin ,也就是不做限制的话,那么使用 * 号做通配符

通常来说不建议这么干,
当然如果有nginx做负载的话,也可以在nginx上部署,此时后端服务可以不用如此实现了,否则可能会出现:

以上是关于rust actix_web解决跨域问题的主要内容,如果未能解决你的问题,请参考以下文章

跨域怎么解决

使用CORS解决跨域问题

如何解决前端跨域问题?

使用nginx代理解决跨域问题

Vue初学,POST跨域问题怎么解决

微服务架构 服务之间跨域问题怎么解决?