『壹』 rust actix_web解決跨域問題
在做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上部署,此時後端服務可以不用如此實現了,否則可能會出現:
『貳』 web開發JAVA,GO,PHP,Python哪種語言好
具體看應用場景。小公司接外包或者創業,首選php,容易上手,學習應用成本很低,有好像thinkphp這種可以快速構建的框羨橘大架和極大量可參考的系統;針對大企業或者大型web應用開發可伍姿以考慮java,有spring這種事實上的企業級框兄豎架,程序員也好招,企業級的解決方案比較豐富;如果針對雲原生web應用做微服務什麼的,go語言更適合,學起來不算難,性能也更強;做一些b/s工具型系統可以考慮nodejs,小巧靈活,生態庫賊豐富;如果想學一門語言能幹很多不同事情,那就是python了,從web開發到大數據都能搞,生態很強大,不過性能就普普通通;追求性能,那就是c/c++或者rust語言,性能沒得說,只是學習門檻很高,有drogon或者actix這樣的框架,開發個一般的系統用的時間會比用php多很多,但是跑起來會快很多很多。