中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

wordpress 中英文網(wǎng)站模板武漢網(wǎng)絡(luò)廣告推廣服務(wù)

wordpress 中英文網(wǎng)站模板,武漢網(wǎng)絡(luò)廣告推廣服務(wù),查詢網(wǎng)站備案時(shí)間查詢,義烏個(gè)人兼職做建設(shè)網(wǎng)站目錄 1、瀏覽器的同源策略 1.1 源 1.2 同源與非同源 1.3 同源請(qǐng)求與非同源請(qǐng)求 2、跨域受到的限制 3、注意點(diǎn) 4、CORS解決Ajax跨域問(wèn)題 4.1 CORS概述 4.2 CORS解決簡(jiǎn)單請(qǐng)求跨域 4.3 簡(jiǎn)單請(qǐng)求與復(fù)雜請(qǐng)求 4.4 CORS解決復(fù)雜請(qǐng)求跨域 4.5 借助CORS庫(kù)快速完成配置 5、JS…

目錄

1、瀏覽器的同源策略

1.1 源

1.2 同源與非同源

1.3 同源請(qǐng)求與非同源請(qǐng)求

2、跨域受到的限制

3、注意點(diǎn)

4、CORS解決Ajax跨域問(wèn)題

4.1 CORS概述

4.2 CORS解決簡(jiǎn)單請(qǐng)求跨域

4.3 簡(jiǎn)單請(qǐng)求與復(fù)雜請(qǐng)求

4.4 CORS解決復(fù)雜請(qǐng)求跨域

4.5 借助CORS庫(kù)快速完成配置

5、JSONP解決跨域?

6、配置代理解決跨域

6.1 自己配置代理服務(wù)器

6.2 使用Nginx搭建代理服務(wù)器

6.3 借助腳手架搭建代理服務(wù)器


1、瀏覽器的同源策略

瀏覽器為了確保資源安全,而遵循的一種策略。

1.1 源

= 協(xié)議 + 域名 + 端口號(hào)

1.2 同源與非同源

1.3 同源請(qǐng)求與非同源請(qǐng)求

所處源目標(biāo)源不一致,就是非同源,又稱異源跨域

2、跨域受到的限制

例如:源A源B,它們是非同源,則瀏覽器會(huì)有如下限制

  1. DOM訪問(wèn)限制:源A的腳本不能讀取和操作源B的DOM
  2. Cookie訪問(wèn)限制:源A不能訪問(wèn)源B的cookie
  3. Ajax響應(yīng)數(shù)據(jù)限制:源A可以給源B發(fā)請(qǐng)求,但是無(wú)法獲取源B的響應(yīng)的數(shù)據(jù)

備注:在上述限制中,瀏覽器對(duì)Ajax獲取數(shù)據(jù)的限制是影響最大的一個(gè),且實(shí)際開發(fā)中經(jīng)常遇到

3、注意點(diǎn)

  1. 跨域限制僅存在瀏覽器端,服務(wù)端不存在跨域限制
  2. 即使跨域了,Ajax請(qǐng)求也可以正常發(fā)出,但響應(yīng)數(shù)據(jù)不會(huì)交給開發(fā)者
  3. <link>、<script>、<img>....這些標(biāo)簽發(fā)出的請(qǐng)求也可能跨域,只不過(guò)瀏覽器對(duì)標(biāo)簽跨域不做嚴(yán)格限制,對(duì)開發(fā)幾乎無(wú)影響

4、CORS解決Ajax跨域問(wèn)題

4.1 CORS概述

CORS全稱:Cross-Origin Resource Sharing(跨域資源共享),是用于控制瀏覽器校驗(yàn)跨域請(qǐng)求的一套規(guī)范,服務(wù)器依照CORS規(guī)范,添加特定響應(yīng)頭來(lái)控制瀏覽器校驗(yàn),規(guī)則如下:

  • 服務(wù)器明確表示拒絕跨域請(qǐng)求,或沒(méi)有表示,則瀏覽器校驗(yàn)不通過(guò)
  • 服務(wù)器明確表示允許跨域請(qǐng)求,則瀏覽器校驗(yàn)通過(guò)

備注:使用CORS解決跨域是最正統(tǒng)的方式,且要求服務(wù)器是“自己人”

4.2 CORS解決簡(jiǎn)單請(qǐng)求跨域

整體思路:服務(wù)器在給出響應(yīng)時(shí),通過(guò)添加Access-Control-Allow-Origin響應(yīng)頭,來(lái)明確表達(dá)允許某個(gè)源發(fā)起跨域請(qǐng)求,隨后瀏覽器在校驗(yàn)時(shí),直接通過(guò)

服務(wù)端核心代碼,以(express框架為例)

const express = require('express')const app = express()const data = [{ id: 123, name: '張三' },{ id: 456, name: '李四' },{ id: 789, name: '趙云' },
]
app.get('/student', (req, res) => {res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:5500')res.send(data)
})app.listen(1234, () => {console.log('服務(wù)運(yùn)行中...')
})

4.3 簡(jiǎn)單請(qǐng)求與復(fù)雜請(qǐng)求

CORS會(huì)把請(qǐng)求分為兩類、分別是:簡(jiǎn)單請(qǐng)求、復(fù)雜請(qǐng)求

簡(jiǎn)單請(qǐng)求復(fù)雜請(qǐng)求
請(qǐng)求方法為:GET、HEAD、POST
  1. 不是簡(jiǎn)單請(qǐng)求,就是復(fù)雜請(qǐng)求
  2. 復(fù)雜請(qǐng)求會(huì)自動(dòng)發(fā)送預(yù)檢請(qǐng)求

請(qǐng)求字段要符合《CORS安全規(guī)范》

簡(jiǎn)記:只要不手動(dòng)修改請(qǐng)求頭,一般都能符合改規(guī)范

請(qǐng)求頭的Content-Type的值只能是以下三種

  • text/plain
  • multipart/form-data
  • application/x-www-form-urlencoded

關(guān)于預(yù)檢請(qǐng)求:

  1. 發(fā)送時(shí)機(jī):預(yù)檢請(qǐng)求再實(shí)際跨域請(qǐng)求之前發(fā)出,是由瀏覽器自動(dòng)發(fā)起的
  2. 主要作用:用于向服務(wù)器確認(rèn)是否允許接下來(lái)的跨域請(qǐng)求
  3. 基本流程:先發(fā)起OPTIONS請(qǐng)求,如果通過(guò)預(yù)檢,繼續(xù)發(fā)起實(shí)際的跨域請(qǐng)求
  4. 請(qǐng)求頭內(nèi)容:一個(gè)OPTIONS預(yù)檢請(qǐng)求,通常會(huì)包含如下請(qǐng)求頭
請(qǐng)求頭含義
Origin? ? ??發(fā)起請(qǐng)求的源
Access-Control-Request-Method實(shí)際請(qǐng)求的HTTP方法
Access-Control-Request-Headers實(shí)際請(qǐng)求中使用的自定義頭(如果有的話)

4.4 CORS解決復(fù)雜請(qǐng)求跨域

1、第一步:服務(wù)器先通過(guò)瀏覽器的預(yù)檢請(qǐng)求,服務(wù)器需要返回如下響應(yīng)頭

響應(yīng)頭含義
Access-Control-Allow-Origin允許的源
Access-Control-Allow-Methods允許的方法
Access-Control-Allow-Headers允許的自定義頭

Access-Control-Max-Age

預(yù)檢請(qǐng)求的結(jié)果緩存時(shí)間(可選)

服務(wù)端核心代碼:

const express = require('express')const app = express()const data = [{ id: 123, name: '張三' },{ id: 456, name: '李四' },{ id: 789, name: '趙云' },
]app.options('/student', (req, res) => {res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:5500')res.setHeader('Access-Control-Allow-Method', 'GET')res.setHeader('Access-Control-Allow-Headers', 'a,b,c')res.setHeader('Access-Control-Allow-Age', 9000)res.send()
})app.get('/student', (req, res) => {res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:5500')res.send(data)
})app.listen(1234, () => {console.log('服務(wù)運(yùn)行中...')
})

4.5 借助CORS庫(kù)快速完成配置

上述的配置中需要自己配置響應(yīng)頭,或者需要自己手動(dòng)封裝中間件,借助cors庫(kù),可以更方便完成配置

1、安裝cors

npm i cors

2、簡(jiǎn)單配置

app.use(cors())

3、完整配置

const corsOption = {origin: 'http://127.0.0.1:5500', // 允許的源methods: ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'], // 允許的方法allowedHeaders: [], // 允許的自定義頭exposedHeaders: [], // 要暴露的響應(yīng)頭optionsSuccessStatus: 200, // 預(yù)檢請(qǐng)求成功的狀態(tài)碼
}
app.use(cors(corsOption))

5、JSONP解決跨域?

1、JSONP概述:JSONP是利用了<script>標(biāo)簽可以跨域加載腳本,且不受嚴(yán)格限制的特性,可以說(shuō)是程序員智慧的結(jié)晶,早起一些瀏覽器不支持CORS時(shí),可以靠JSONP解決跨域

2、基本流程

  • 第一步:客戶端創(chuàng)建一個(gè)<script>標(biāo)簽,并將其src屬性設(shè)置為包含跨域請(qǐng)求的URL,同時(shí)準(zhǔn)備一個(gè)回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于處理返回的數(shù)據(jù)
  • 第二步:服務(wù)端接收到請(qǐng)求后,將數(shù)據(jù)封裝在回調(diào)函數(shù)中并返回
  • 第三步:客戶端的回調(diào)函數(shù)被調(diào)用。數(shù)據(jù)以參數(shù)的形式傳入回調(diào)函數(shù)。

3、圖示

4、服務(wù)端核心代碼:

const express = require('express')
const app = express()const data = [{ id: 123, name: '張三' },{ id: 456, name: '李四' },{ id: 789, name: '趙云' },
]app.get('/getData', (req, res) => {res.send(`fn(${JSON.stringify(data)})`)
})app.listen(1234, () => {console.log('服務(wù)運(yùn)行中...')
})

5、客戶端核心代碼:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><button onclick="getData()">獲取數(shù)據(jù)</button></body><script>function fn(data) {console.log(data)}function getData() {const script = document.createElement('script')script.onload = () => {script.remove()}script.src = 'http://127.0.0.1:1234/getData'document.body.appendChild(script)}</script>
</html>

6、配置代理解決跨域

6.1 自己配置代理服務(wù)器

借助 http-proxy-middleware 配置代理

const { createProxyMiddleware } = require('http-proxy-middleware')// 攔截所有帶有'/api'的請(qǐng)求,轉(zhuǎn)發(fā)給target
app.use('/api',createProxyMiddleware({target: 'https://www.toutiao.com',changOrigin: true, // 允許跨域pathRewrite: {'^/api': '',},})
)

6.2 使用Nginx搭建代理服務(wù)器

1. 安裝 Nginx

首先,你需要在你的服務(wù)器上安裝 Nginx。根據(jù)你的操作系統(tǒng),安裝步驟可能有所不同。

?在 Ubuntu/Debian 系統(tǒng)上:

sudo apt update
sudo apt install nginx

在 CentOS/RHEL 系統(tǒng)上:

sudo yum install epel-release
sudo yum install nginx

在 Fedora 系統(tǒng)上:

sudo dnf install nginx

安裝完成后,啟動(dòng) Nginx 并設(shè)置開機(jī)自啟:

sudo systemctl start nginx
sudo systemctl enable nginx

2、配置 Nginx 作為代理服務(wù)器

接下來(lái),配置 Nginx 作為代理服務(wù)器。你可以編輯 Nginx 配置文件,通常在 /etc/nginx/nginx.conf/etc/nginx/sites-available/default,具體路徑根據(jù)操作系統(tǒng)和 Nginx 版本可能有所不同。

基本的代理配置示例如下:

  1. 打開配置文件:
    sudo nano /etc/nginx/nginx.conf
    
  2. 添加一個(gè) server 塊來(lái)配置代理設(shè)置。例如,假設(shè)你想要將所有請(qǐng)求代理到 http://backend-server
    http {...server {listen 80;server_name your-domain.com;location / {proxy_pass http://backend-server;  # 后端服務(wù)器的地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}...
    }
    

    這里的 proxy_pass 指令將請(qǐng)求轉(zhuǎn)發(fā)到 http://backend-server。你可以根據(jù)需要更改為你實(shí)際的后端服務(wù)器地址。

    proxy_set_header 指令用于設(shè)置轉(zhuǎn)發(fā)請(qǐng)求時(shí)的 HTTP 頭信息。

  3. 保存文件并退出編輯器。
  4. 測(cè)試配置是否正確:
    sudo nginx -t
    
  5. 重新加載 Nginx 配置:
    sudo systemctl reload nginx
    

3、驗(yàn)證代理設(shè)置

現(xiàn)在,你可以通過(guò)訪問(wèn)你的代理服務(wù)器地址來(lái)驗(yàn)證是否能夠成功地將請(qǐng)求代理到后端服務(wù)器。例如,訪問(wèn) http://your-domain.com,你應(yīng)該能夠看到來(lái)自 http://backend-server 的內(nèi)容。

4、其他配置(可選)

根據(jù)需求,你可能還需要進(jìn)行其他配置,例如:

  • 負(fù)載均衡: 如果你有多個(gè)后端服務(wù)器,可以使用 upstream 塊來(lái)進(jìn)行負(fù)載均衡。
  • SSL/TLS 加密: 如果你需要 HTTPS,可以配置 SSL 證書來(lái)加密代理流量。
  • 緩存: 配置 Nginx 緩存以提高性能。

6.3 借助腳手架搭建代理服務(wù)器

修改 vue.config.js 文件:

// vue.config.js
module.exports = {devServer: {proxy: 'http://localhost:5000',  // 代理到你的后端服務(wù)器// 或者使用對(duì)象形式配置多個(gè)代理/*proxy: {'/api': {target: 'http://localhost:5000',changeOrigin: true,pathRewrite: { '^/api': '' },},},*/},
};

http://m.risenshineclean.com/news/63103.html

相關(guān)文章:

  • 網(wǎng)站設(shè)置flash插件網(wǎng)站關(guān)鍵詞優(yōu)化推廣哪家快
  • 做購(gòu)物網(wǎng)站多少錢 知乎公司宣傳網(wǎng)頁(yè)怎么做
  • 安徽網(wǎng)站建設(shè)怎么樣微信廣告投放推廣平臺(tái)
  • 網(wǎng)站維護(hù)運(yùn)營(yíng)青島關(guān)鍵詞搜索排名
  • 做游戲開箱網(wǎng)站的法律風(fēng)險(xiǎn)seo關(guān)鍵詞排名優(yōu)化是什么
  • 個(gè)人做網(wǎng)站開發(fā)廣州線下教學(xué)
  • 網(wǎng)站服務(wù)器租用多少錢一年合適濟(jì)南網(wǎng)站設(shè)計(jì)
  • 仿站工具下載后咋做網(wǎng)站私域流量營(yíng)銷
  • 厚街網(wǎng)站建設(shè)多少錢百度的seo關(guān)鍵詞優(yōu)化怎么弄
  • 石巖醫(yī)院網(wǎng)站建設(shè)免費(fèi)的外貿(mào)網(wǎng)站推廣方法
  • 蘇州高新區(qū)建設(shè)局網(wǎng)站管網(wǎng)百度 搜索熱度
  • 濟(jì)南免費(fèi)做網(wǎng)站合肥網(wǎng)站建設(shè)程序
  • 做網(wǎng)站如何兼職廣告seo是什么意思
  • 怎樣做學(xué)校網(wǎng)站網(wǎng)站建設(shè)公司好
  • 怎樣防止別人利用自己的電腦做網(wǎng)站服務(wù)器網(wǎng)站域名查詢網(wǎng)
  • 怎么用上線了做網(wǎng)站淘寶推廣怎么做
  • 關(guān)鍵字查詢我的網(wǎng)站怎么做鄭州網(wǎng)絡(luò)推廣服務(wù)
  • 寵物用品技術(shù)支持 東莞網(wǎng)站建設(shè)汨羅網(wǎng)站seo
  • wordpress 搜索提示河南整站關(guān)鍵詞排名優(yōu)化軟件
  • 互聯(lián)網(wǎng)網(wǎng)站制作公司蘇州百度推廣公司
  • 海洋網(wǎng)站建設(shè)性價(jià)比高石嘴山網(wǎng)站seo
  • 蘇州網(wǎng)站制作外貿(mào)營(yíng)銷網(wǎng)站建站
  • 網(wǎng)站制作怎么學(xué)游戲交易平臺(tái)
  • 郴州網(wǎng)站建設(shè)公司在哪里西安關(guān)鍵詞網(wǎng)站排名
  • 網(wǎng)站robots.txt怎么寫可口可樂(lè)營(yíng)銷策劃方案
  • 百度搜不到我的網(wǎng)站免費(fèi)友情鏈接
  • 織夢(mèng)怎么做網(wǎng)站北京網(wǎng)站優(yōu)化專家
  • 華為手機(jī)網(wǎng)站建設(shè)策劃方案論文班級(jí)優(yōu)化大師怎么用
  • 學(xué)習(xí)網(wǎng)站建設(shè)的網(wǎng)站品牌互動(dòng)營(yíng)銷案例
  • 云南凡科建站哪家好免費(fèi)發(fā)布廣告的平臺(tái)