摘要:我們看下跨域不生效的問題,首先拋出兩個問題我們如何設置又如何確定設置是否生效了首先,我們實現一個簡單的接口新建一個文件,將如下代碼復制進去,通過啟動服務,在本地就可以通過來訪問了我們創建的接口了環境安裝的教程網上有很多詳細的教程,本文不再贅
我們看下跨域不生效的問題,首先拋出兩個問題:
</>復制代碼
我們如何設置 cookie ?
又如何確定 cookie 設置是否生效了 ?
首先,我們實現一個簡單的接口,新建一個 test.js 文件,將如下代碼復制進去,通過 node test.js 啟動服務,在本地就可以通過 http://localhost:3000/rest/collect/event/h5/v1/ 來訪問了我們創建的接口了(node 環境安裝的教程網上有很多詳細的教程,本文不再贅述)
</>復制代碼
var express = require("express");
var app = express();
var URL = require("url")
var path = require("path");
app.post("/rest/collect/event/h5/v1/", function(req, res) {
res.cookie("token","11111112222222224444444444")
res.cookie("httpOnly-token","11111112222222224444444444",{ httpOnly: true })
function User() {
this.name;
this.city;
this.age;
}
var user = new User();
if(params.id == "1") {
user.name = "ligh";
user.age = "1";
user.city = "北京市";
}else{
user.name = "SPTING";
user.age = "1";
user.city = "杭州市";
}
var response = {status:1,data:user};
res.send(JSON.stringify(response));
});
app.listen(3000);
console.log("Listening on port 3000...");
訪問效果如下
在前端代碼中訪問我們的接口
在瀏覽器中我們可以看到請求的 Resopnse Headers 里,有兩個 set-cookie頭部,區別在于一個帶有 HttpOnly的標識,我們打開瀏覽器的調試窗口Application我們可以看到,兩個數值都被設置到瀏覽器里了,httpOnly的值在瀏覽器調試窗口的http一欄,打了個小勾,說明這個變量是只能通過 http 請求來獲取到這個cookie ,前端無法通過 js 的 document.cookie來獲取到
講到這塊內容,我們順便講下 cookie 設置的其他參數的作用
cookie 和域名相關的喲,Domain 變量表示 cookie 生效的域名,expries和max-age表示 cookie 的有效時間
問題描述及解決在開發階段我自己用node 簡單的寫了一個接口,便于聯調前端傳參問題,希望通過 http 的set-cookie 存儲變量, 但是卻始終沒有把 cookie 成功設置到瀏覽器里,經過排查發現是跨域導致的 cookie 設置不生效
不生效的原因是我本地項目啟動在 http://localhost:70,但是調用的接口在 http://localhost:3000上,端口不一樣,存在跨域的問題,所以雖然在 Response Header 里看到了set-cookie的操作,但是在瀏覽器的 application里看到,并沒有被設置進來,解決辦法,通過nginx 代理(最長用的跨域解決辦法)
擴展跨域的問題在開發過程中比較常見,我們經常會碰到,簡單來說只要請求資源的協議,域名,端口不一致,都會導致跨域,網上的解決方法也比較多,比較成熟,本文不做擴展,附帶幾個鏈接供大家參考
跨域中的預檢測請求
CORS 跨域中的 Cookie
跨域資源共享 CORS 詳解
Web開發中跨域的幾種解決方案
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93157.html
摘要:所謂的無連接就是服務器收到了客戶端的請求之后,響應完成并收到客戶端的應答之后,即斷開連接。從而節省傳輸時間。協議對事務的處理沒有記憶能力。這種方式某種方面上講解放了服務器,但是卻不利于客戶端與服務器的連接。 session與cookie是什么? session與cookie屬于一種會話控制技術.常用在身份識別,登錄驗證,數據傳輸等.舉個例子,就像我們去超市買東西結賬的時候,我們要拿出我...
摘要:可選的最長有效時間,格林尼治標準時間。如果不傳表示這是一個會話期。默認值為當前文檔訪問地址的主機名不包含子域名。設置的目錄及其子目錄都生效。可選設置了屬性的不能使用經由屬性和進行訪問以防范跨站腳本攻擊。 問題 描述 先看下后臺返回的Set-Cookie字段:showImg(https://segmentfault.com/img/bVbulhz?w=858&h=128);查看瀏覽器Co...
摘要:文章列出解決方案以及對應的,拒絕說概念,不在稀里糊涂。服務器據此決定,該實際請求是否被允許。在有效時間內,瀏覽器無須為同一請求再次發起預檢請求。請注意,瀏覽器自身維護了一個最大有效時間,如果該首部字段的值超過了最大有效時間,將不會生效。 文章列出解決方案以及對應的demo, 拒絕說概念,不在稀里糊涂。 什么情況出現跨域? 協議不同 域名不同 端口不同 跨域解決方案 1.同一個主域下...
摘要:一產生跨域的原因瀏覽器限制跨域請求二解決思路解決跨域有多重,在這里主要講用解決跨域代理瀏覽器禁止檢查跨域三下載安裝下載地址選擇其中一個版本下載,再解壓即可使用在目錄下輸入,若出現版本號,則安裝成功四反向代理解決跨域客戶端解決跨域我們使用的 一. 產生跨域的原因 1.瀏覽器限制 2.跨域 3.XHR(XMLHttpRequest)請求 二. 解決思路 解決跨域有多重,在這里主要講用ngi...
閱讀 1449·2021-11-22 13:54
閱讀 4365·2021-09-22 15:56
閱讀 1822·2021-09-03 10:30
閱讀 1321·2021-09-03 10:30
閱讀 2089·2019-08-30 15:55
閱讀 1857·2019-08-30 14:13
閱讀 2063·2019-08-29 15:19
閱讀 2367·2019-08-28 18:13