最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx 解決WebApi跨域二次請求以及Vue單頁面的問題

 更新時間:2018年01月10日 09:09:36   作者:簡玄冰  
下面小編就為大家分享一篇Nginx 解決WebApi跨域二次請求以及Vue單頁面的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、前言

由于項目是前后端分離,API接口與Web前端 部署在不同站點當中,因此在前文當中WebApi Ajax 跨域請求解決方法(CORS實現(xiàn))使用跨域處理方式處理而不用Jsonp的方式。

但是在一段時間后,發(fā)現(xiàn)一個很奇怪的問題,每次前端發(fā)起請求的時候,通過瀏覽器的開發(fā)者工具都能看到在Network下同一個url有兩條請求,第一條請求的Method為OPTIONS,第二條請求的Method才是真正的Get或者Post,并且,第一條請求無數(shù)據(jù)返回,第二條請求才返回正常的數(shù)據(jù)。

二、原因

第一個OPTIONS的請求是由WEB服務器處理跨域訪問引發(fā)的。OPTIONS是一種預檢請求,瀏覽器在處理跨域訪問的請求時,如果判斷請求為復雜請求,則會先向服務器發(fā)送一條預檢請求,根據(jù)服務器返回的內(nèi)容,瀏覽器判斷服務器是否允許訪問該請求。如果WEB服務器采用CORS的方式支持跨域訪問,在處理復雜請求時這個預檢請求是不可避免的。

由于我們的WEB服務器采用CORS來解決跨域訪問的問題,同時在header中添加了自定義參數(shù)以及使用json格式來進行數(shù)據(jù)交互,導致我們的每次請求都是復雜請求,從而產(chǎn)生每次請求都會發(fā)送兩條請求的現(xiàn)象。

產(chǎn)生原因如下:

使用CORS解決跨域問題

三、解決方案

3.1 Nginx

3.1.1 思路

將前端項目部署在Nginx當中,通過代理的方式來解決跨域請求問題

3.1.2 實現(xiàn)

3.1.2.1 安裝 Nginx

Windows 下 安裝 Nginx 最簡單,直接下載壓縮包,然后解壓后

3.1.2.2 配置 Nginx

已自帶默認配置,如要部署Vue、Angular這種單頁面應用,將打包后的index.html文件以及dist目錄放到發(fā)布目錄中,將路徑復制,用于配置Nginx服務指向

配置文件如下:

server {
 listen 9461; # 監(jiān)聽端口號
 server_name localhost 192.168.88.22; # 訪問地址
 location / {
 root 項目路徑; # 例如:E:/Publish/xxx/;
 index index.html;
 
 # 此處用于處理 Vue、Angular、React 使用H5 的 History時 重寫的問題
 if (!-e $request_filename) {
 rewrite ^(.*) /index.html last;
 break;
 }
 }
 
 # 代理服務端接口
 location /api {
 proxy_pass http://localhost:9460/api;# 代理接口地址
 }
 }

3.1.2.3 Nginx 常用命令

啟動:start nginx

重新加載配置:nginx -s reload

重新打開日志文件:nginx -s reopen

測試配置文件是否正確:nginx -t [可選:指定路徑]

快速停止:nginx -s stop

有序停止:nginx -s quit

3.1.3 Nginx 單頁面應用H5 History Url重寫

支持

Vue、Angular、React

原因

實現(xiàn)單頁面時,刷新頁面會產(chǎn)生頁面找不到的問題,所以需要重寫Url地址到index.html當中。

注意點

在使用Nginx中URL重寫的時候,一直報錯如下

檢查后,發(fā)現(xiàn) if 和 ( 之間必須有個空格。

3.2 Other

3.2.1 思路

既然要發(fā)送預檢請求,是否可以減少預檢請求的次數(shù)?

例如可以設定一個有效期,在有效期內(nèi)不再重復預檢。

3.2.2 實現(xiàn)

可以在服務端處預檢完成后加入一個Access-Control-Max-Age請求頭來解決這個問題。

3.2.3 CORS 響應字段說明

Access-Control-Allow-Methods

該字段必需,它的值是逗號分隔的一個字符串,表明服務器支持的所有跨域請求的方法。

注意,返回的是所有支持的方法,而不單是瀏覽器請求的那個方法。這是為了避免多次"預檢"請求。

Access-Control-Allow-Headers

如果瀏覽器請求包括Access-Control-Request-Headers字段,則Access-Control-Allow-Headers字段是必需的。

它也是一個逗號分隔的字符串,表明服務器支持的所有頭信息字段,不限于瀏覽器在"預檢"中請求的字段。

Access-Control-Allow-Credentials

該字段與簡單請求時的含義相同。

Access-Control-Max-Age

該字段可選,用來指定本次預檢請求的有效期,單位為秒。上面結果中,有效期是20天(1728000秒),即允許緩存該條回應1728000秒(即20天),在此期間,不用發(fā)出另一條預檢請求。

Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 1728000

以上這篇Nginx 解決WebApi跨域二次請求以及Vue單頁面的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享

    nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享

    這篇文章主要介紹了nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享,需要的朋友可以參考下
    2015-01-01
  • windows系統(tǒng)安裝配置nginx環(huán)境

    windows系統(tǒng)安裝配置nginx環(huán)境

    這篇文章介紹了windows系統(tǒng)安裝配置nginx環(huán)境的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Nginx中配置開啟Nginx Status來查看服務器運行狀態(tài)

    Nginx中配置開啟Nginx Status來查看服務器運行狀態(tài)

    這篇文章主要介紹了Nginx中配置開啟Nginx Status來查看服務器運行狀態(tài)的方法,Nginx Status為Nginx服務器內(nèi)置的狀態(tài)頁,需要的朋友可以參考下
    2016-01-01
  • Nginx配置使用詳解

    Nginx配置使用詳解

    Nginx是一個高性能的HTTP和反向代理web服務器。本文詳細講解了Nginx配置使用的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Nginx支持websocket的配置詳解

    Nginx支持websocket的配置詳解

    本文主要介紹了Nginx支持websocket的配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Nginx實現(xiàn)接口限流的方法匯總

    Nginx實現(xiàn)接口限流的方法匯總

    這篇文章主要為大家詳細介紹了Nginx實現(xiàn)接口限流的相關方法,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • Nginx實現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)的步驟詳解

    Nginx實現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)的步驟詳解

    外網(wǎng)瀏覽器與內(nèi)網(wǎng)是不通的,但是外網(wǎng)與中間過渡服務器是通的,中間過渡服務器與內(nèi)網(wǎng)服務器是通的,這樣在外網(wǎng)訪問過渡服務器時,過渡服務器再跳轉到后臺服務器,本文給大家介紹了Nginx外網(wǎng)訪問內(nèi)網(wǎng)如何實現(xiàn)步驟,需要的朋友可以參考下
    2023-10-10
  • Nginx如何配置加密證書訪問實現(xiàn)

    Nginx如何配置加密證書訪問實現(xiàn)

    本文主要介紹了Nginx如何配置加密證書訪問實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 詳解Nginx SSL快速雙向認證配置(腳本)

    詳解Nginx SSL快速雙向認證配置(腳本)

    這篇文章主要介紹了詳解Nginx SSL快速雙向認證配置(腳本),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • zabbix配置nginx監(jiān)控的實現(xiàn)

    zabbix配置nginx監(jiān)控的實現(xiàn)

    本文主要介紹了zabbix配置nginx監(jiān)控的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05

最新評論

黑山县| 讷河市| 石狮市| 诏安县| 奇台县| 高雄县| 安龙县| 靖边县| 光泽县| 古交市| 宁蒗| 集贤县| 霍城县| 遂川县| 神池县| 沽源县| 遂川县| 朝阳县| 白河县| 竹北市| 漾濞| 哈密市| 铁岭市| 务川| 普安县| 沙雅县| 囊谦县| 通渭县| 神池县| 全椒县| 无极县| 肥西县| 老河口市| 库尔勒市| 蒲城县| 定兴县| 淮南市| 襄汾县| 江阴市| 高要市| 定兴县|