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解决跨域问题的主要内容,如果未能解决你的问题,请参考以下文章