精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官 -- 跨域請求如何攜帶 Cookie ?

開發(fā) 前端
(常規(guī)的面試套路,一般都會順著你的回答往深了問)由于之前的項(xiàng)目都是同源的,不牽涉跨域訪問,所以一時沒有回答出來,后來研究了下,所以有了這篇文章。

前言

最近在參加面試找工作,陸陸續(xù)續(xù)的面了兩三家。其中面試官問到了一個問題:如何解決跨域問題?我巴巴拉拉的一頓說,大概了說了四種方法,然后面試官緊接著又問:那跨域請求怎么攜帶cookie呢?(常規(guī)的面試套路,一般都會順著你的回答往深了問)由于之前的項(xiàng)目都是同源的,不牽涉跨域訪問,所以一時沒有回答出來,后來研究了下,所以有了這篇文章。

閱讀本文,你將學(xué)到:

1.學(xué)會`withCredentials`屬性;

2.學(xué)會`axios`配置`withCredentials`;

3.學(xué)會設(shè)置`Access-Control-Allow-Origin`屬性;

4.學(xué)會設(shè)置`Access-Control-Allow-Credentials`屬性;

5.學(xué)會解決跨域請求攜帶源站cookie的問題

一. 搭建一個跨域請求的環(huán)境

思路:

  1.    使用express搭建第一個服務(wù)A(http://localhost:8000),運(yùn)行在8000端口上;
  2.    A服務(wù)托管index.html(用于在前端頁面發(fā)送網(wǎng)絡(luò)請求)文件;
  3.    在A服務(wù)中寫一個處理請求的路由,加載index.html頁面時,種下cookie(這里種cookie為了在請求B服務(wù)時攜帶上);
  4. 使用express搭建第二個服務(wù)B(http://localhost:8003),運(yùn)行在8003端口上;
  5. 在A服務(wù)托管的index.html頁面去請求B服務(wù),然后把cookie傳過去;

先看下代碼結(jié)構(gòu),相對比較的簡單:

A服務(wù)的代碼:

// src/app1.js
const express = require("express");
const app = express();
// `index.html` 加載時會請求login接口
// 設(shè)置`cookie`
app.get("/login", (req, res) => {
res.cookie("user", "jay", { maxAge: 2000000, httpOnly: true });
res.json({ code: 0, message: "登錄成功" });
});

// 此接口是檢測`cookie`是否設(shè)置成功,如果設(shè)置成功的話,瀏覽器會自動攜帶上`cookie`
app.get("/user", (req, res) => {
// req.headers.cookie: user=jay
const user = req.headers.cookie.split("=")[1];
res.json({ code: 0, user });
});

// 托管`index.html`頁面
// 這樣的話在`index.html`中發(fā)起的請求,默認(rèn)的源就是`http://localhost:8000`
// 然后再去請求`http://localhost:8003`就會出現(xiàn)跨域了
app.use("/static", express.static("public"));
app.listen("8000", () => {
console.log("app1 running at port 8000");
});

index.html的代碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<met
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h2>this is index.html at port 8000</h2>
<button id="button">發(fā)送同源請求</button>
<button id="cross-button">發(fā)送跨域請求</button>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
const button = document.querySelector("#button");
const crossButton = document.querySelector("#cross-button");
axios.get("http://localhost:8000/login", {}).then((res) => {
console.log(res);
});
// 發(fā)送同域請求
button.onclick = function () {
axios.get("http://localhost:8000/user", {}).then((res) => {
console.log(res);
});
};
// 發(fā)送跨域請求
crossButton.onclick = function () {
axios({
method: "get",
url: "http://localhost:8003/anotherService",
}).then((res) => {
console.log(res);
});
};
</script>
</body>
</html>

B服務(wù)的代碼:

// src/app2.js
const express = require("express");
const app = express();
// 定義一個接口,index.html頁面請求這個接口就是跨域(因?yàn)槎丝诓煌?/span>
app.get("/anotherService", (req, res) => {
res.json({ code: 0, msg: "這是8003端口返回的" });
});
app.listen("8003", () => {
console.log("app2 running at port 8003");
});

這個時候環(huán)境基本就搭建好了。

二、解決跨域攜帶cookie問題

首先我們先在A服務(wù)的index.html頁面中得到一個cookie,運(yùn)行A服務(wù):

npm install express -D
node src/app1.js

然后打開http://localhost:8000/static/index.html: 沒有問題的話,頁面長這樣:

這個時候F12打開控制臺:可以看到發(fā)送了一個login請求,并且設(shè)置了cookie,也可以選擇瀏覽器控制臺的Application頁簽,選中cookie,可以看到cookie的信息:

然后我們點(diǎn)擊頁面上的發(fā)送同源請求按鈕,可以看到發(fā)送了一個user請求,并且已經(jīng)攜帶上了cookie:

接下來刺激的畫面來了,我們點(diǎn)擊 發(fā)送跨域請求 按鈕,出現(xiàn)了跨域請求的報(bào)錯:

重點(diǎn):接下來開始解決跨域攜帶cookie問題:

1. 在前端請求的時候設(shè)置request對象的屬性withCredentials為true;

什么是withCredentials?

XMLHttpRequest.withCredentials 屬性是一個Boolean類型,它指示了是否該使用類似cookies,authorization headers(頭部授權(quán))或者TLS客戶端證書這一類資格證書來創(chuàng)建一個跨站點(diǎn)訪問控制(cross-site Access-Control)請求。在同一個站點(diǎn)下使用withCredentials屬性是無效的。

如果在發(fā)送來自其他域的XMLHttpRequest請求之前,未設(shè)置withCredentials 為true,那么就不能為它自己的域設(shè)置cookie值。而通過設(shè)置withCredentials 為true獲得的第三方cookies,將會依舊享受同源策略,因此不能被通過document.cookie或者從頭部相應(yīng)請求的腳本等訪問。

// 修改跨域請求的代碼
crossButton.onclick = function () {
axios({
withCredentials: true, // ++ 新增
method: "get",
url: "http://localhost:8003/anotherService",
}).then((res) => {
console.log(res);
});
};

這個時候再去發(fā)送一個跨域請求,你會發(fā)現(xiàn)依舊報(bào)錯,但是我們仔細(xì)看下報(bào)錯,意思是需要設(shè)置header的Access-Control-Allow-Origin屬性:

2. 在服務(wù)端設(shè)置Access-Control-Allow-Origin

我們修改B(app2.js)服務(wù)的代碼:

// 在所有路由前增加,可以攔截所有請求
app.all("*", (req, res, next) => {
res.header("Access-Control-Allow-Origin", "http://localhost:8000");
next();
});

修改完之后再次發(fā)送一個跨域請求,你會發(fā)現(xiàn),又報(bào)錯了(接近崩潰),但是跟之前報(bào)的錯不一樣了,意思大概就是Access-Control-Allow-Credentials這個屬性應(yīng)該設(shè)置為true,但是顯示得到的是個'':

3. 在服務(wù)端設(shè)置Access-Control-Allow-Credentials

再次修改B服務(wù)的代碼(每次修改后需要重新運(yùn)行):

// 在所有路由前增加,可以攔截所有請求
app.all("*", (req, res, next) => {
res.header("Access-Control-Allow-Origin", "http://localhost:8000");
res.header("Access-Control-Allow-Credentials", "true"); // ++ 新增
next();
});

再發(fā)送一個跨域請求:

可以看到,這個跨域請求已經(jīng)請求成功并且返回?cái)?shù)據(jù)了!而且也攜帶了A服務(wù)的cookie,這個時候已經(jīng)大功告成了。

三、總結(jié)

  1. 前端請求時在request對象中配置"withCredentials": true;
  2. 服務(wù)端在response的header中配置"Access-Control-Allow-Origin", "http://xxx:${port}";
  3. 服務(wù)端在response的header中配置"Access-Control-Allow-Credentials", "true"

如果看完這篇文章能夠幫助到你,請給個贊哦!

責(zé)任編輯:龐桂玉 來源: 前端大全
相關(guān)推薦

2022-03-21 07:35:34

處理方式跨域

2015-08-13 10:29:12

面試面試官

2022-02-08 08:14:07

Context數(shù)據(jù)線程

2011-04-18 14:23:37

javascriptHTML

2023-02-16 08:10:40

死鎖線程

2022-01-18 09:02:45

請求前端代碼

2021-01-18 05:13:04

TomcatHttp

2024-10-16 15:01:20

2024-01-10 15:27:58

SessionCookieWeb 應(yīng)用

2024-02-20 14:10:55

系統(tǒng)緩存冗余

2024-03-18 14:06:00

停機(jī)Spring服務(wù)器

2024-09-11 22:51:19

線程通訊Object

2025-03-17 00:00:00

2024-04-03 00:00:00

Redis集群代碼

2010-08-12 16:28:35

面試官

2021-07-06 07:08:18

管控數(shù)據(jù)數(shù)倉

2023-11-20 10:09:59

2021-03-17 08:39:24

作用域作用域鏈JavaScript

2021-03-16 22:25:06

作用域鏈作用域JavaScript

2020-06-12 15:50:56

options前端服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

精品无人码麻豆乱码1区2区| 日韩免费看片| 色综合久久六月婷婷中文字幕| 欧美在线3区| 亚洲一区 中文字幕| 欧美日韩国产精品一区二区亚洲| 亚洲精品国产免费| 最近中文字幕一区二区| 青青青草视频在线| 久久九九影视网| 亚洲一区二区三区乱码aⅴ| 日本中文字幕在线免费观看| 久久成人高清| 日韩欧美电影在线| 亚洲 中文字幕 日韩 无码| 亚洲图区一区| 国产欧美日韩久久| 国产九区一区在线| 国产精品久久影视| 久久精品欧洲| 久久久久久久久国产| 国产精品成人在线视频| 国产美女撒尿一区二区| 欧美日产国产精品| 亚洲人成色77777| 青春草视频在线观看| 国产精品日产欧美久久久久| 激情伦成人综合小说| 国产精品怡红院| 久久亚洲二区| 久久久久日韩精品久久久男男| 蜜桃av免费观看| 久久99国产成人小视频| 亚洲成人网av| 麻豆精品国产传媒| 亚洲91在线| 在线观看不卡视频| 日批视频在线免费看| 久草成色在线| 亚洲黄网站在线观看| 亚洲午夜精品一区二区三区| 九色在线视频蝌蚪| 99精品1区2区| 国内一区二区三区在线视频| 亚洲第一免费视频| 国产精品一二二区| 91色在线视频| 中文字幕一区二区久久人妻| 天堂av在线一区| 国产精品红桃| 欧美麻豆精品久久久久久| 欧美精品一区二区三区免费播放| caoprom在线| 一区二区三区免费看视频| 天天操天天干天天玩| a√资源在线| 国产亚洲污的网站| 青青成人在线| 第一福利在线| 国产日韩精品一区二区三区| 久久久水蜜桃| 青青草免费在线视频| 久久蜜桃香蕉精品一区二区三区| 欧美精品尤物在线| 国产精品久久久久久久龚玥菲| 91麻豆高清视频| 精品在线观看一区二区| 色鬼7777久久| 国产欧美精品区一区二区三区 | 视频精品一区二区三区| 在线综合+亚洲+欧美中文字幕| 国产福利精品一区二区三区| 国产精品日本一区二区不卡视频| 91麻豆精品91久久久久久清纯| 91精产国品一二三产区别沈先生| 日韩高清二区| 日韩精品亚洲元码| 国产jk精品白丝av在线观看| 久久在线电影| 色综合久久久久久中文网| 日韩av电影网址| 天堂成人免费av电影一区| 国产日产欧美精品| 午夜老司机福利| www.日韩av| 色噜噜狠狠一区二区三区| 免费在线看黄网站| 亚洲高清久久久| 蜜臀av午夜一区二区三区| 亚洲男人在线| 精品久久久久久久久久久久久久久| 在线精品一区二区三区| 日本一区二区高清不卡| 久久99国产精品自在自在app| 日本少妇毛茸茸高潮| 日本亚洲视频在线| 999视频在线免费观看| 视频在线不卡| 亚洲视频香蕉人妖| 激情六月丁香婷婷| 99久久久国产| 日韩精品极品视频免费观看| 男人av资源站| 在线亚洲自拍| 91手机视频在线观看| 偷拍自拍在线| 1000部国产精品成人观看| 9久久9毛片又大又硬又粗| 日韩综合久久| 亚洲无亚洲人成网站77777| 久久久全国免费视频| 免费成人在线观看视频| 国产综合动作在线观看| 国产黄a三级三级三级av在线看| 调教+趴+乳夹+国产+精品| av中文字幕网址| 亚洲日产av中文字幕| 久久夜色撩人精品| 亚洲国产无线乱码在线观看| 波波电影院一区二区三区| a级黄色片网站| 影视一区二区三区| 亚洲福利视频久久| 99视频只有精品| 久久国产精品99精品国产 | 欧美色就是色| 国外视频精品毛片| 精品人妻一区二区三区换脸明星 | 久久综合伊人77777麻豆| 91香蕉在线观看| 欧美日韩国产综合一区二区三区| 熟女少妇一区二区三区| 亚洲第一网站| www.久久爱.cn| 好吊日视频在线观看| 欧美图片一区二区三区| 在线观看福利片| 亚洲专区一区二区三区| 国产91视觉| 欧洲一区二区三区| 日韩欧美国产三级电影视频| 午夜国产福利一区二区| 麻豆精品新av中文字幕| 亚洲激情一区二区三区| 日本黄色一区| 中文字幕成人在线| 在线观看日韩一区二区| 国产女人18毛片水真多成人如厕 | 九色综合狠狠综合久久| 亚洲综合网中心| 日本美女久久| 日韩亚洲欧美成人| 国产巨乳在线观看| 一区二区三区在线视频观看 | 99国产精品久久久| 日韩国产欧美亚洲| 国产成人影院| 国产精品精品一区二区三区午夜版 | 精品少妇一区二区三区| 久久亚洲成人av| 丰满白嫩尤物一区二区| 无码日本精品xxxxxxxxx| 亚洲青青久久| 欧美激情免费在线| 神马久久精品| 欧美亚洲国产一区二区三区| 亚洲理论片在线观看| 另类小说一区二区三区| 蜜臀在线免费观看| 麻豆国产欧美一区二区三区r| 欧美亚洲在线播放| 成人一区二区不卡免费| 制服丝袜成人动漫| 国产乡下妇女做爰毛片| 91网站最新网址| 污污动漫在线观看| **女人18毛片一区二区| 国产精品免费一区二区三区观看| 女厕盗摄一区二区三区| 影音先锋欧美精品| 国产xxxxxx| 精品日韩中文字幕| 污污视频网站在线免费观看| 国产成人av自拍| 国产真实乱子伦| 图片小说视频色综合| 国产精品久久久久久久久久久久午夜片 | 亚洲免费观看高清完整版在线观看熊| 成人做爰www看视频软件| 久久精品麻豆| 亚洲国产一二三精品无码 | 欧美三区四区| 九九视频这里只有精品| 男女网站在线观看| 日韩一级大片在线| 男人天堂2024| 亚洲综合免费观看高清在线观看| 久久久亚洲av波多野结衣| 国内成+人亚洲+欧美+综合在线| 午夜精品久久久久久久无码| 欧美高清视频在线观看mv| 精品国产福利| 国产精品高清一区二区| 日韩av色综合| 国产91足控脚交在线观看| 中文字幕日韩专区| 无码国产伦一区二区三区视频 | 免费观看黄网站| 日韩国产在线观看| 日韩成人三级视频| 欧美顶级大胆免费视频| 欧美日韩在线精品一区二区三区| 日韩不卡在线视频| 国产精品爽黄69天堂a| 少妇视频一区| 欧美激情欧美激情在线五月| 网友自拍视频在线| 亚洲人成啪啪网站| 四虎在线视频免费观看| 91精品国产一区二区三区蜜臀| 亚洲黄色免费观看| 亚洲一区二区三区视频在线播放| a一级免费视频| 国产欧美精品一区| 亚洲天堂久久新| 99视频在线观看一区三区| 捷克做爰xxxⅹ性视频| 男女男精品网站| 北条麻妃av高潮尖叫在线观看| 亚洲高清久久| 久青草视频在线播放| 亚洲天堂免费| 中文字幕99| 99精品综合| 亚洲啪啪av| 国产九一精品| 日本一区二区三不卡| 无码少妇一区二区三区| 国产精品免费在线播放| 一区视频网站| 国产精品乱码| 99ri日韩精品视频| 成人午夜电影免费在线观看| 精品91福利视频| 91欧美激情另类亚洲| 91精品一区| 91亚洲精品在线| 经典三级久久| 国产精品免费区二区三区观看| 成人爽a毛片| 好看的日韩精品| 欧美重口另类| 欧洲精品久久| 日韩精品1区| 在线免费观看成人网| 911精品美国片911久久久| 国产成人三级视频| 国内精品福利| 久久无码高潮喷水| 三级欧美在线一区| 午夜免费福利在线| 韩国一区二区在线观看| 午夜免费福利网站| 成人午夜激情在线| 中文字字幕码一二三区| 中文字幕精品一区| h色网站在线观看| 亚洲成人中文在线| 手机在线看片1024| 欧美日韩国产a| 亚洲精品久久久久avwww潮水| 亚洲成人在线视频播放| 黄色在线网站| 久久精品亚洲热| 成人女同在线观看| 国产成人精品一区二区| 成人噜噜噜噜| 精品一区在线播放| 91综合在线| 欧美视频免费看欧美视频| 久久亚洲精品伦理| 97免费公开视频| 久久久久久久网| 黄色录像免费观看| 精品成人久久av| 一级做a爱片久久毛片| 精品国精品自拍自在线| 国产免费视频在线| 欧美理论片在线观看| 自拍一区在线观看| 91亚洲精品丁香在线观看| 日韩av午夜| 三级网在线观看| 日韩午夜高潮| 午夜一级免费视频| 久久综合给合久久狠狠狠97色69| 欧洲美女女同性互添| 欧美日韩亚洲高清| 精品国产乱码一区二区三| 亚洲欧美日韩精品久久| 午夜小视频福利在线观看| 国产精品va在线播放| 91精品短视频| 亚洲人成77777| 午夜一区不卡| 最新日本中文字幕| 中文字幕日韩精品一区| 五月天婷婷激情| 日韩欧美色电影| 91网在线播放| 国产不卡精品视男人的天堂| 国产精品xxxav免费视频| 一区二区三区国| 久久婷婷久久| aaaaaav| 亚洲一区二区三区影院| 91丨九色丨丰满| 国产一区二区免费| 日韩在线伦理| 精品亚洲欧美日韩| 亚洲一级高清| 亚洲欧洲日韩综合| 成人欧美一区二区三区小说| 天天天天天天天干| 亚洲女同精品视频| 日韩在线伦理| 久久伦理网站| 国产精品亚洲欧美| 久久精品女同亚洲女同13| 亚洲最大成人网4388xx| 国产精品一级视频| 久久九九精品99国产精品| 嫩草伊人久久精品少妇av杨幂| 日韩精品国内| 丝袜亚洲另类欧美综合| 白丝女仆被免费网站| 精品人伦一区二区三区蜜桃免费 | 亚洲少妇激情视频| 成人爱爱网址| 欧美日韩一区二区视频在线观看 | 奇米成人av国产一区二区三区| 青青操综合网| 日韩在线综合网| 91在线视频观看| 久久久精品福利| 亚洲精品一区中文字幕乱码| 美女100%一区| 日韩久久不卡| 免费观看在线色综合| ass极品国模人体欣赏| 欧美日韩精品欧美日韩精品一| av在线女优影院| 国产欧美一区二区三区在线| 亚洲高清影视| 潘金莲一级淫片aaaaa| 亚洲一区在线播放| 日韩中文字幕免费在线观看| 8x海外华人永久免费日韩内陆视频| 琪琪久久久久日韩精品| 妓院一钑片免看黄大片| 国产精品久久99| 99在线观看精品视频| 欧美黑人狂野猛交老妇| 免费福利视频一区| 别急慢慢来1978如如2| 国产精品久久久爽爽爽麻豆色哟哟 | 免费黄网站在线播放| 亚洲va男人天堂| 日韩视频不卡| 欧美一区二区三区粗大| 91麻豆精品国产91久久久资源速度| 污片视频在线免费观看| 九色91在线视频| 美美哒免费高清在线观看视频一区二区 | 另类春色校园亚洲| 一区二区成人网| 一区二区理论电影在线观看| 色鬼7777久久| 成人综合国产精品| 99香蕉国产精品偷在线观看| 欧美人妻一区二区三区| 欧美一区二区播放| 大菠萝精品导航| 一区二区精品免费视频| 成人午夜电影网站| 亚洲精品一区二区二区| 欧美肥婆姓交大片| 国产精品日韩精品中文字幕| 中文字幕一区二区在线观看视频| 亚洲成人一区二区在线观看| 尤物在线视频| 国产欧美亚洲日本| 久久91精品久久久久久秒播| 日本黄色片视频| 日韩在线中文字| 欧美亚洲tv| 国产高清av片| 欧美午夜精品免费| 国产污视频在线播放| 97精品国产97久久久久久粉红|