瀏覽器跨域

2021-09-25 22:50:20 字數 2148 閱讀 3871

前端部分,簡單的封裝乙個promise版的ajax

let myajax = (function (), headers={}})else}}

xhr.open(method, path);

for(let [key, value] of object.entries(headers))

xhr.send(body)})}

}())

myajax(),

headers:

}).then(data=>, err=>)

後端用nodejs + express

const express = require("express");

const bodyparser = require("body-parser");

bodyparser.urlencoded()

); console.log("running");

}); res.header("access-control-allow-origin", "*");

res.header("access-control-allow-headers", "x-requested-withs,content-type");

res.header("access-control-allow-methods", "put,post,get,delete,options");

res.header("x-powered-by", " 3.2.1");

next();

}); console.log(req.body);

res.send(json.stringify());

});

主要就是設定這一部分

res.header("access-control-allow-origin", "*");   //指定那些**可以跨域資源共享, *代表所有,可以填具體的,如 代表這個**可以向你請求資源

res.header("access-control-allow-headers", "x-requested-withs,content-type");  //指定請求頭的型別,在前端我們設定的是content-type,這裡一定要加進來,多個請求頭型別以逗號分開

res.header("access-control-allow-methods", "put,post,get,delete,options");//指定請求型別,post,get等等

next();  //最後一定要next()一下才會生效

});

測試服務端執行在localhost:3000

客戶端則在本地檔案file:///i:/file/index.html

客戶端像服務端請求資料顯然是非同源的,需要跨域

常用請求頭和響應頭

jsonp跨域主要是利用script標籤自帶的跨域buff

前端**

後端**

var callback = req.query.callback;

var data = "jsonp 跨域成功";

res.send(callback + "('" + data + "')");

});

原理:

在服務端中先取得callback函式名,然後再返回資料中進行拼接callback + "(' " + data + " ')"   這樣一來就把資料data當做引數放在乙個函式呼叫裡面,最後的效果相當於

瀏覽器跨域

同源策略 同源策略是乙個重要的安全策略,它用於限制乙個origin的文件或者它載入的指令碼如何能與另乙個源的資源進行互動。它能幫助阻隔惡意文件,減少可能被攻擊的媒介。協議 網域名稱 埠號 http伺服器,預設的埠號為80 tcp 木馬executor開放此埠 https securely trans...

瀏覽器設定跨域

由於專案前端使用8001埠,後端使用的8080埠,因此前端呼叫後端介面時需要跨域,在瀏覽器中需要設定跨域,否則會由於跨域安全性導致請求失敗。比如chrome中,需要新建乙個chrome瀏覽器的快捷方式,右鍵選擇屬性 新增 disable web security user data dir c ch...

瀏覽器跨域問題

就是瀏覽器在執行js時,會看這個js檔案屬於哪個站點,它只能在指令碼操作本站點,比如從傳來的js檔案,它就只能向傳送請求,沒有為什麼,這是瀏覽器強制規定的,你要用瀏覽器就必須遵循 1.傳輸協議一樣,也就是http這裡 2.網域名稱一樣,也就是www.asd.com,注意localhost和127.0...