国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

跨域請求

2024-06-28 15:59:43
字體:
來源:轉載
供稿:網友

背景

最近閑來無事做個個人網站耍,部署到服務器的時候發現有個字體文件老是下載不下來,瀏覽器老是報不允許跨域請求。

什么是跨域以及產生原因

跨域是指a頁面想獲取b頁面資源,如果a、b頁面的協議、域名、端口、子域名不同,或是a頁面為ip地址,b頁面為域名地址,所進行的訪問行動都是跨域的,而瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。   跨域情況如下:   

url 說明 是否跨域
http://www.CUOXin.com/a.jshttp://www.a.com/b.js 不同域名
http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一域名,不同文件夾
http://www.a.com:8000/a.jshttp://www.a.com/b.js 同一域名,不同端口
http://www.a.com/a.jshttps://www.a.com/b.js 同一域名,不同協議
http://www.a.com/a.jshttp://70.32.92.74/b.js 域名和域名對應IP
http://www.a.com/a.jshttp://script.a.com/b.js 主域相同,子域不同 是(cookie不可訪問)
http://www.a.com/a.jshttp://a.com/b.js 同一域名,不同二級域名(同上)

跨域的常見解決方法

目前來講沒有不依靠服務器端來跨域請求資源的技術

jsonp 需要目標服務器配合一個callback函數。window.name+iframe 需要目標服務器響應window.name。window.location.hash+iframe 同樣需要目標服務器作處理。html5的 postMessage+ifrme 這個也是需要目標服務器或者說是目標頁面寫一個postMessage,主要側重于前端通訊。CORS 需要服務器設置header :access-Control-Allow-Origin。nginx反向代理 這個方法一般很少有人提及,但是他可以不用目標服務器配合,不過需要你搭建一個中轉nginx服務器,用于轉發請求。

我的情況

寫了一個博客系統玩,自己的服務器,采用Nginx代理轉發請求到tomcat。 部署完項目后瀏覽器里面訪問,發現有幾個圖標出不來,經檢測是字體文件被瀏覽器認為是跨越請求,沒有被加載。該字體文件不是由頁面直接引用,而是通過一個CSS文件加載的,該css加載無問題。字體文件和css文件都在工程目錄下,理應不會出現跨域請求的情況。 在火狐瀏覽器里面打開網絡請求查看器,點開請求結果為0字節的字體請求連接,結果如下: 跨域請求 跨域請求

這個字體文件是通過字體css依賴加載的,并不是通過頁面直接引用。 發現請求頭Host是 itclj.com 而Origin是http://www.itclj.com。 響應Server是由Nginx報出來的,進過定位,應該是Nginx認為,源主機是www.itclj.com,目標主機是itclj.com不來自同一個域,所以被認為是非法請求。

Nginx配置如下: nginx配置

在瀏覽器里面請求www.itclj.com的時候Nginx會自動解析為服務名itclj.com,代理轉發后請求變為了http://itclj.com,通過代理的文件來發起請求的主機就變成了itclj.com,瀏覽器里面實際的主機是www.itclj.com所以,所以被Nginx認為是跨域請求了。 修改Nginx為如下配置即可。

Nginx配置

修改配置重啟Nginx即解決問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻江县| 论坛| 福清市| 乌什县| 安吉县| 重庆市| 根河市| 永丰县| 简阳市| 芷江| 清涧县| 瑞安市| 郓城县| 凯里市| 大关县| 仪征市| 西盟| 穆棱市| 西城区| 水富县| 封丘县| 民乐县| 富裕县| 杭州市| 诸暨市| 阿巴嘎旗| 永城市| 宜兰市| 琼结县| 定西市| 屯昌县| 富川| 隆安县| 永定县| 正阳县| 安泽县| 马鞍山市| 蚌埠市| 宁河县| 龙江县| 庐江县|