tongweb 部署軟航流版簽一體化應用示例 提示跨域錯誤CORS ERROR

目錄

問題現象與描述

解決辦法

原理解析

什么是CORS

瀏覽器跨域請求限制

跨域問題解決方法

跨域請求流程

瀏覽器請求分類解析

http請求方法簡介


問題現象與描述

重慶軟航科技有限公司提供了一套針對針對word、excel等流式文件轉換成PDF版式文件并進行版式文件在線簽章的一個方案,給方案做了一個應用示例,該示例在完成流式文件轉成PDF版式文件之后展示了一個在線閱讀轉換后PDF文件并在線簽章的相關功能。

但是在tongweb上部署之后發現該示例完成word轉PDF功能后的在線查看PDF時功能異常,瀏覽器中F12調試 發現狀態信息不為200而是 CORS error,如下圖所示:

該功能對應的請求 已配置請求頭信息:Access-Control-Allow-Origin為*

查看詳細的信息時發現:Referrer Policy為same-origin:

且 該應用在tomcat中 部署時并未出現此類異常,因此可以斷定示例本身是沒有問題的。

猜想可能是由于tongweb的配置影響了。

說一下示例所需要的資源部署情況:將其需要的軟航電子簽章系統、軟航版式文檔簽批系統、軟航文檔轉換系統以及軟航提供的結合這幾個一體化應用示例都部署到了同一臺服務器的tongweb上了。

解決辦法

打開tongweb 管理控制臺,在【WEB容器配置】中選擇【HTTP通道管理】選擇【tong-http-listener】:

下拉到【其他設置】:

在其他設置這里有一個:禁用HTTP請求方法

將禁用的OPTIONS方法放開(勾選取消掉):

之后 重啟tongweb ,再試就可以解決 CORS error 問題了。

原理解析

什么是CORS

CORS:即跨域(Cross-Origin Resource Sharing, CORS)是一種安全策略,由瀏覽器 enforced,限制跨域 HTTP 請求,指在一個域下的網頁嘗試訪問另一個域下的資源。在web應用中服務器地址、端口、項目但凡有一個不同,訪問的資源不是自己的,那就屬于跨域。例如部署在A服務器上的appA項目,那么 在appA中訪問 B服務器上的appB?,或者訪問服務器A上的其他應用appx 都屬于跨域。

跨域問題主要發生在瀏覽器端,服務器端由于協議設計的原因,不存在跨域問題。瀏覽器端跨域請求主要涉及到同源策略(Same-Origin Policy),同源策略限制了從一個源加載的文檔或腳本與另一個源的資源進行交互。

瀏覽器跨域請求限制

瀏覽器默認是禁用跨域請求的,主要體現在以下方面:

(1)HTTP 請求方法:通常只允許 GET、POST 和 HEAD 請求。

(2)HTTP 頭信息:無法發送 Cookie、HTTP 認證信息(如 Basic Auth)等。

(3)HTTP 響應:無法讀取非簡單響應內容,如 JSONP 只支持 JSON 格式。

跨域問題解決方法

(1)同源策略:通過 HTML5 的 window.postMessage 方法實現跨域通信。

(2)CORS:服務器設置 Access-Control-Allow-Origin 等響應頭,允許特定域訪問資源。

(3)JSONP:通過動態創建 script 標簽,利用其不受同源策略限制的特性實現跨域請求。

(4)代理服務器:通過設置一個代理服務器,實現請求轉發和響應返回。

跨域請求流程

(1)瀏覽器發送預檢請求(Preflight Request):詢問服務器是否允許該跨域請求。

(2)服務器響應預檢請求:如果允許,返回相應的 CORS 響應頭。

(3)瀏覽器發送實際請求:攜帶 CORS 響應頭信息,如 Access-Control-Allow-Origin。

瀏覽器請求分類解析

瀏覽器發送預檢請求以及實際發送請求時就需要對瀏覽器請求做分類。 瀏覽器請求使用的是HTTP協議時,請求分類主要有:

HTTP 1.0: GET、POST、HEAD

HTTP 1.1: GET、POST、HEAD、[OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT]

在本次遇到的問題中已經設置好了?攜帶 CORS 響應頭信息,如 Access-Control-Allow-Origin ,且tomcat中異常,可以肯定應用本身是設定好的。而服務器響應預檢請求的時候實際是由 tomcat、tongweb這種應用服務器中間件來處理的。那么也就是說但凡瀏覽器發送的請求類型被應用服務器本身攔截了,那么必然是會出現跨域問題的,這時就需要讓應用服務器允許對應的請求才行。

http請求方法簡介

上述提到的瀏覽器請求分類,實際就是常說的http請求方法。主要http 請求方法介紹如下:

  • get:用于從服務器獲取資源,例如請求一個網頁或圖片。這是最常見的請求方法,用于讀取或下載數據。
  • head:與GET方法類似,但服務器在響應中只返回HTTP頭部信息,不返回實際數據。這通常用于檢索資源的元信息。
  • post:用于向服務器提交數據以供處理,例如表單提交或文件上傳。POST請求通常用于添加新資源或更新現有資源。
  • put:用于更新服務器上的現有資源。客戶端發送PUT請求時,會包含一個指定資源的新表示,服務器將用這個新表示替換原有資源。
  • delete:用于請求服務器刪除指定的資源。
  • connect:用于建立到服務器的隧道化連接,通常用于代理服務器。
  • options:用于獲取關于資源所支持通信選項的信息。服務器在響應中會包含一個Allow頭,列出支持的所有請求方法。
  • trace:用于追蹤請求-響應的傳輸路徑,通常用于調試目的。

根據瀏覽器調試的信息可以看到當前問題的網絡信息里 確實是有兩次請求?:第一次請求時 http請求的方法類型為:options 也就是前文提到的?瀏覽器發送預檢請求(Preflight Request):詢問服務器是否允許該跨域請求。

第二次才是 實際請求:

?所以在tongweb 管理控制臺里 設置?【WEB容器配置】中選擇【HTTP通道管理】選擇【tong-http-listener】里開放Options方法 就可以解決當下遇到的問題了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41571.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41571.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41571.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ai積累-具體應用的大概設想

這些場景展示了以 ChatGPT 為代表的生成式 AI 可能的具體應用: 教育輔助: AI 可以充當學生的個性化輔導老師,提供定制化的學習材料和練習。例如,它可以生成針對學生能力水平和興趣的數學問題或歷史教學文章。 客戶支持&#xff1…

LESS 的嵌套寫法有什么優勢?

LESS的嵌套寫法可以提高代碼的可讀性和維護性。通過將相關的樣式規則嵌套在父選擇器中&#xff0c;可以更清晰地表達樣式之間的層級關系&#xff0c;避免重復的代碼&#xff0c;并且使樣式結構更加整潔。 例如&#xff0c;假設有以下HTML結構&#xff1a; <div class"…

Qt 加載圖片的幾種方式 以及加載 loading

項目中經常使用加載圖片&#xff1a; 常用有兩種方式&#xff1a; 1.使用 QWidget 加載圖片&#xff1a; 效果&#xff1a; 樣例源碼&#xff1a; int pict_H ui->widgetImage->height();int pict_W ui->widgetImage->width();ui->widgetImage->setFixe…

白騎士的C語言教學高級篇 3.4 C語言中的算法

算法是解決問題的核心。無論是排序、搜索&#xff0c;還是遞歸與動態規劃&#xff0c;算法的選擇和實現對程序的效率和性能有著重要影響。本節將介紹幾種常見的算法&#xff0c;包括排序算法、搜索算法&#xff0c;以及遞歸和動態規劃的應用。 排序算法 排序算法是將一組數據按…

昇思25天學習打卡營第17天|SSD目標檢測

學AI還能贏獎品&#xff1f;每天30分鐘&#xff0c;25天打通AI任督二脈 (qq.com) SSD目標檢測 模型簡介 SSD&#xff0c;全稱Single Shot MultiBox Detector&#xff0c;是Wei Liu在ECCV 2016上提出的一種目標檢測算法。使用Nvidia Titan X在VOC 2007測試集上&#xff0c;SSD…

使用 CloudWatch + SNS + Lambda 實現多渠道告警系統

1. 簡介 在現代云計算環境中,及時和有效的監控告警對于維護系統的穩定性至關重要。本文將介紹如何使用 AWS CloudWatch、Simple Notification Service (SNS) 和 Lambda 函數構建一個多渠道告警系統,包括郵件告警、釘釘機器人告警和電話語音告警。 2. 系統架構 整個系統的工…

利用border繪制三角技巧

繪制三角形的效果如圖 <html lang"zh-cn"> <head><meta charset"UTF-8"><title>demo</title><style>* {margin: 0;padding: 0;}.box {/* 盒子寬高改成零就變成三角形 &#xff0c;需要哪個方向的三角形就設置哪個方向…

Python一些可能用的到的函數系列130 UCS-Time Brick

說明 UCS對象是基于GFGoLite進行封裝&#xff0c;且側重于實現UCS規范。 內容 1 函數 我發現pydantic真是一個特別好用的東西&#xff0c;可以確保在數據傳遞時的可靠&#xff0c;以及對某個數據模型的描述。 以下&#xff0c;UCS給出了id、time相關的brick映射&#xff0…

【分布式系統五】監控平臺Zabbix實際監控運用(命令+截圖詳細版)

目錄 一.Zabbix 監控 Windows 1.安裝zabbix 2.Web 頁面添加主機&#xff0c;關聯模板 二.Zabbix 監控 Java 應用 1.安裝tomcat 2.服務端安裝 zabbix-java-gateway 3.Web 頁面添加主機&#xff0c;關聯模板 三.Zabbix 監控 SNMP 1.服務端安裝 snmp 監控程序 2.修改 sn…

RT-Thread和freeRTOS啟動流程

一. freeRTOS啟動流程 二. RT-Thread啟動流程 因為RT-Thread中我們定義了補丁函數也叫做鉤子函數--$Sub$$main()--作為一個新功能函數&#xff0c;可以將原有函數劫持下來&#xff0c;并在之后的程序運行中加上$Super $ $前綴來重新調用原始函數。 所以啟動流程是$Sub$$main(…

Chiasmodon:一款針對域名安全的公開資源情報OSINT工具

關于Chiasmodon Chiasmodon是一款針對域名安全的公開資源情報OSINT工具&#xff0c;該工具可以幫助廣大研究人員從各種來源收集目標域名的相關信息&#xff0c;并根據域名、Google Play應用程序、電子郵件地址、IP地址、組織和URL等信息進行有針對性的數據收集。 該工具可以提…

利用node連接mongodb實現一個小型后端服務系統demo

http 請求 實現get請求數據庫數據&#xff1b;實現添加數據實現編輯數據實現刪除數據實現導出txt文件、Excel文件實現查詢數據庫數據并利用導出為excel文件 node 版本 16.16.0 node 版本 18.16.0 會連接 MongoDB 數據庫錯誤。 Connected to MongoDB failed MongoServerSele…

Nginx-簡介

介紹 nginx是一款HTTP和反向代理服務器、郵件代理服務器和通用TCP/IP代理服務器&#xff0c;在俄羅斯廣泛使用&#xff0c;用于代理高負載站點。 版本 nginx開源版nginx plus企業版openresty將nginx和lua腳本結合 tengine更穩定、高性能 正向代理 客戶端和代理服務是一伙的…

【vue動態組件】VUE使用component :is 實現在多個組件間來回切換

VUE使用component :is 實現在多個組件間來回切換 component :is 動態父子組件傳值 相關代碼實現&#xff1a; <component:is"vuecomponent"></component>import componentA from xxx; import componentB from xxx; import componentC from xxx;switch(…

生產力工具|viso常用常見科學素材包

一、科學插圖素材網站 一圖勝千言&#xff0c;想要使自己的論文或重要匯報更加引人入勝&#xff1f;不妨考慮利用各類示意圖和科學插圖來輔助研究工作。特別是對于新手或者繁忙的科研人員而言&#xff0c;利用免費的在線科學插圖素材庫&#xff0c;能夠極大地節省時間和精力。 …

Python字符編碼檢測利器: chardet庫詳解

Python字符編碼檢測利器: chardet庫詳解 1. chardet簡介2. 安裝3. 基本使用3.1 檢測字符串編碼3.2 檢測文件編碼 4. 高級功能4.1 使用UniversalDetector4.2 自定義編碼檢測 5. 實際應用示例5.1 批量處理文件編碼5.2 自動轉換文件編碼 6. 性能優化7. 注意事項和局限性8. 總結 在…

【代碼隨想錄】【算法訓練營】【第58天】 [卡碼110]字符串接龍 [卡碼105]有向圖的完全可達性 [卡碼106]島嶼的周長

前言 思路及算法思維&#xff0c;指路 代碼隨想錄。 題目來自 卡碼網。 day 59&#xff0c;周五&#xff0c;繼續ding~ 題目詳情 [卡碼110] 字符串接龍 題目描述 卡碼110 字符串接龍 解題思路 前提&#xff1a; 思路&#xff1a; 重點&#xff1a; 代碼實現 C語言 […

Jackson庫使用教程

1. Jackson概述 定義: Jackson是一個基于Java的開源JSON解析工具&#xff0c;用于Java對象與JSON數據的互相轉換。示例JSON:{"author": "一路向北_Coding","age": 20,"hobbies": ["coding", "leetcode", "r…

昇思25天學習打卡營第13天|linchenfengxue

Diffusion擴散模型 關于擴散模型&#xff08;Diffusion Models&#xff09;有很多種理解&#xff0c;本文的介紹是基于denoising diffusion probabilistic model &#xff08;DDPM&#xff09;&#xff0c;DDPM已經在&#xff08;無&#xff09;條件圖像/音頻/視頻生成領域取得…

小蜜蜂WMS與小蜜蜂WMS對接集成根據條件獲取客戶信息列表(分頁)連通新增客戶信息(小蜜蜂讀寫測試)

小蜜蜂WMS與小蜜蜂WMS對接集成根據條件獲取客戶信息列表&#xff08;分頁&#xff09;連通新增客戶信息(小蜜蜂讀寫測試) 接通系統&#xff1a;小蜜蜂WMS 天津市小蜜蜂計算機技術有限公司&#xff08;acbee&#xff0c;TianJinACBEEComputerTechnologyCo.,Ltd&#xff09;成立于…