⑴ 前端提供給後端一個介面是什麼意思
不存在前端提供給後端介面。
開發中,不存在前端給後端介面的情況,幾乎都是後端給前端介面。提供的介面就是使用者可以通過服務端部署的機器提供出來的URL地址進行動態的數據交互。
通常的工作流為後端跟前端協商定義數據介面格式形成文檔,後端實現介面,前端做靜態的mock,後端實現服務介面,兩邊都完成後集成聯調。
(1)前端後端在同一埠擴展閱讀:
前端技術一般分為前端設計和前端開發,前端設計一般可以理解為網站的視覺設計,前端開發則是網站的前台代碼實現,包括基本的HTML和CSS以及JavaScript/ajax,現在最新的高級版本HTML5、CSS3,以及SVG等。
前端運行在PC端,移動端等瀏覽器上展現給用戶瀏覽的網頁。隨著互聯網技術的發展,HTML5,CSS3,前端框架的應用,跨平台響應式網頁設計能夠適應各種屏幕解析度,完美的動效設計,給用戶帶來極高的用戶體驗。
⑵ 前端埠是怎麼交互後端
隨著互聯網的高速發展以及IT開發技術的升級,前後端分離已成為互聯網項目開發的業界標准使用方式。在實際工作中,前後端的介面聯調對接工作量佔Web前端人員日常工作的30%-50%,甚至會更高。
首先我們要知道為什麼前後端要交互
為什麼要前後端分離?
把前端與後端獨立起來去開發,放在兩個不同的伺服器,需要獨立部署。兩個不同的工程,兩個不同的代碼庫,不同的開發人員,前後端工程師需要約定交互介面,實現同步開發。開發結束後需要進行獨立部署,前端通過介面來調用調用後端的API,前端只需要關注頁面的樣式與動態數據的解析和渲染,而後端專注於具體業務邏輯。
前後端分離的優點是什麼?
1、徹底解放前端。前端不再需要向後台提供模板或是後台在前端HTML中嵌入後台代。
2、提高工作效率,分工更加明確。前端只關注前端的事,後台只關心後台的活,兩者開發可以同時進行,在後台還沒有時間提供介面的時候,前端可以先將數據寫死或者調用本地的JSON文件即可,頁面的增加和路由的修改也不必再去麻煩後台,開發更加靈活。
3、局部性能提升。通過前端路由的配置,我們可以實現頁面的按需載入,無需一開始載入首頁便載入網站的所有的資源,伺服器也不再需要解析前端頁面,在頁面交互及用戶體驗上有所提升。
4、降低維護成本。通過目前主流的前端MVC框架,我們可以非常快速的定位及發現問題的所在,客戶端的問題不再需要後台人員參與及調試,代碼重構及可維護性增強。
5、實現高內聚低耦合,減少後端(應用)伺服器的並發/負載壓力。
6、即使後端服務暫時超時或者宕機了,前端頁面也會正常訪問,但無法提供數據。
7、可以使後台能更好的追求高並發、高可用、高性能,使前端能更好的追求頁面表現、速度流暢、兼容性、用戶體驗等。
了解了這些,我們再來看前後端是怎麼實現交互的
前端調用後端介面無外乎六種方法,如下:
1、打開vs,創建空的asp.net mvc演示項目【WebMVC】
(1)依次點擊【文件】->【新建】->【項目】;
(2)在【新建項目】界面選擇【Web】->【ASP.NET Web 應用程序(.NET Framework)】,輸入名稱,選擇框架至少4.5版本,點擊【確定】按鈕;
(3)選擇【空】->【MVC】->【確定】 ;
(4)創建好了項目。
2、在項目中
(1)在Controllers文件夾上點擊滑鼠右鍵,依次選擇【添加】->【控制器】,即可完成HomeController的創建;
(2)在Controller的Index方法內,點擊滑鼠右鍵,選擇【添加視圖】;
(3)在項目中添加文件夾【Content】並添加jquery源文件;
(4)在Index頁面添加jquery的引用。
3、在Index頁面中添加一個輸入文本框,一個按鈕,以及顯示結果的dom。
4、在HomeController中添加新的方法,用於接收前台傳入的參數,組裝後返回。
5、在Index頁面,添加Jquery的ajax方式,調用後台介面,返回結果的處理代碼。
6、在vs中,按F5調試運行結果,如下:
(1)在文本框中輸入內容;
(2)點擊按鈕,調用介面,並將返回值顯示在界面;
(3)如果要提交大量數據,或者敏感數據,請修改ajax的type方式,這樣參數就不會在url地址欄中顯示了。
以上回答,希望對你有所幫助
⑶ 前端開發和後台對介面一定要在同一個網路下嗎
沒有說一定,這個根據公司的配置來看的,如果是只能內網訪問api的話 那就只能是同一區域網 或者是把你的ip配置到api的電腦上一下也是可以的,如果後台的介面全部是放在了線上的話 那就不需要同一網路了
⑷ 前端如何連接到後端
首先分兩步來研究,第一步,前端請求後端介面,不去理會後端是如何實現的,只關注後端給我返回哪些數據,數據結構是怎樣的。請求方法去參照各大框架或者瀏覽器自帶的方法說明,該用GET用GET,該用POST用POST。獲取到數據自行處理。
再者,處理node端,我需要給前端哪些欄位,這些欄位之間如何組織,我是否可以從資料庫中直接得到還是需要進行一定的加工處理。這些都在node端完成。當兩端對接好了一個如何接受,一個如何輸出,你的問題就解決了!
前端用js和Ajax請求後端介面,
後端返回數據,
前端拿到數據以後再做處理。
以上就是前端如何的連接到後端的一個過程,如果你還不會的話,可以去網上找一些教程來學習!
⑸ 使用nginx代理解決跨域問題
先說說跨域這事情吧。早在13年,我剛接觸前端開發的時候就遇到了跨域,那時候剛開始流行前後端分離。解決跨域就是直接用get jsonp。還是小白的我,也沒有去想跨域的其它解決方式和為什麼要採用這種解決方式。
最近,做一個二次開發的項目,也碰到了用網頁請求http post,瀏覽器跨域,不能獲取返回數據的問題,所以再次來梳理下這個跨域,為什麼最後選擇了nginx代理。
首先,什麼是跨域呢?首先需要了解的是同源和跨源的概念。對於相同源,其定義為:如果協議、埠(如果指定了一個)和主機對於兩個頁面是相同的,則兩個頁面具有相同的源。 只要三者之一任意一點有不同,那麼就為不同源。 同源策略限制從一個源載入的文檔或腳本如何與來自另一個源的資源進行交互。這是一個用於隔離潛在惡意文件的關鍵的安全機制。當一個資源從與該資源本身所在的伺服器的域或埠不同的域或不同的埠請求一個資源時,資源會發起一個跨域 HTTP 請求。跨域不一定是瀏覽器限制了發起跨站請求,而也可能是跨站請求可以正常發起,但是返回結果被瀏覽器攔截了。 簡單的來說,出於安全方面的考慮,頁面中的JavaScript無法訪問其他伺服器上的數據,即「同源策略」。而跨域就是通過某些手段來繞過同源策略限制,實現不同伺服器之間通信的效果。
跨域的解決方案也有很多種。
類型一:有些瀏覽器可以設置 ,降低它的安全性。但是對於一個網站,要求設置瀏覽器是不切合實際的。
類型二:直接用form方式 ,這種情況下不是ajax請求,而是直接訪問目標地址了,不存在跨域問題,但是這個頁面已經跳轉了。而我們想實現的只是取另外一個地址的數據到本地顯示而已。
類型三:服務端語言是能夠處理的情況下。
1、CORS 是一個W3C標准,全稱是」跨域資源共享」(Cross-origin resource sharing)。它允許瀏覽器向跨源伺服器,發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。跨域資源共享( CORS )機制允許 Web 應用伺服器進行跨域訪問控制,從而使跨域數據傳輸得以安全進行。其需要服務端和客戶端同時支持。
對於簡單請求,瀏覽器直接發出CORS請求。具體來說,就是在頭信息之中,增加一個Origin欄位。如果Origin指定的源,不在許可范圍內,伺服器會返回一個正常的HTTP回應。瀏覽器發現,這個回應的頭信息沒有包含Access-Control-Allow-Origin欄位(詳見下文),就知道出錯了,從而拋出一個錯誤,被XMLHttpRequest的onerror回調函數捕獲。注意,這種錯誤無法通過狀態碼識別,因為HTTP回應的狀態碼有可能是200。如果Origin指定的域名在許可范圍內,伺服器返回的響應,會多出幾個頭信息欄位。 Access-Control-Allow-Origin 該欄位是必須的。它的值要麼是請求時Origin欄位的值,要麼是一個*,表示接受任意域名的請求。 Access-Control-Allow-Credentials 該欄位可選。 Access-Control-Expose-Headers 該欄位可選。
可以說這種辦法主要在header上下功夫,設置Access-Control-Allow-Origin為所有*允許訪問。雖然說它支持所有的請求方式,post,delete,put等等,但是它不能兼容ie6,7等等。
例如下圖的nodejs express 例子:
2、服務端的http ajax請求全部改為 get jsonp方式 。該方式能夠兼容老式瀏覽器。
3、iframe window.name 這種傳值得方式很巧妙,兼容性也很好。但是在要訪問數據的地址那個伺服器要有一個空的中間頁面拿來用。
4、postMessage , html5 window.postMessage。 同iframe window.name有點像,也是需要服務端有個空的html拿來接收數據。而且現在的postMessage兼容性也不好。
5、document.domain 修改為頂級域名。
6、 WebSocket ,協議不實行同源政策,只要伺服器支持,就可以通過它進行跨源通信。
類型四:不是簡單的前後端。假如有個第三方的api,自己有一個網站前端,一個網站後端。
1、自己的網站端和後端源碼放在同一個服務埠和目錄下,不存在跨域。當直接用網站前端的http訪問第三方api,瀏覽器跨域。此時,改為由網站後端的服務端語言訪問,做個中間人,將訪問的數據給網頁前端。
2、網站前端和後端不是同源的,採用以上的跨域方案,譬如CORS。同樣的網站後端做中間人,訪問第三方api,再轉給網頁前端。
3、使用nginx 反向代理解決跨域問題。 網站前端訪問nginx服務的地址,nginx設置代理地址為訪問第三方api地址,當訪問代理地址的時候,瀏覽器訪問的是nginx服務的地址,實際是訪問第三方api地址。
注意:此時,如果目錄下有個proxy.html,因為設置代理地址是/proxy,碰到這個地址就被轉到」https://192.168.18.175:8088/api/v1.0.2/「,所以要訪問proxy.html是訪問不到的。
4、使用nginx代理地址是解決生產環境發布的問題了,那麼我在開發的時候使用angular這樣需要打包的框架怎麼辦呢。當然在開發環境下,angular也是由類似代理地址的解決方案的。
(1)創建配置代理文件:假設後端服務的訪問地址為http://192.168.19.175:8088/api/v1.0.2/login,我們可以創建一個proxy.conf.json文件,放在package.json同目錄下。
(2)改寫package.json文件 ,採用--proxy-config命令(angular自帶的命令)。
(3)ajax訪問代理地址
此時, 執行 npm start ,即可發現,瀏覽器訪問http://localhost:4200/api/v1.0.2/login 的同源地址,實際上是訪問http://192.168.18.175:8088/api/v1.0.2/login.
angular在開發環境下代理地址的方法類似在生產環境下使用的nginx代理。但是測試angular是有一個/api代理地址的巧合。剛好第三方api上面的地址有個api,才能使用這個地址,並且能夠簡寫一個api,才能成功訪問,如果更改為其它的,譬如proxy,就測試失敗。而且proxy.conf.json文件下的設置也只能是域名和埠。所以,本人測試,這或許是個巧合或者是缺陷。
五、其它
當然,跨域這個算是歷史性的問題,以後也會存在這個問題。除了上面各種方法,以及根據各種方法使用的場合,還有許多其它的方法。例如各大流行框架react,vie應該也有像angular一樣,能夠處理跨域的開發環境方案,接下來,還是要繼續學習和積累。
⑹ 前端和後端放在同一個伺服器上是跨域嗎
只要在一個域名下,當然就不是跨域了。