說在前頭
解決跨域的方式不下 7 8 種,類似的文章我也發表過,但開發路上總會遇到一些奇奇怪怪的限制,讓你始終沒法 easy 除錯,這次我乾脆寫了個 vscode 擴充套件,伴隨開發工具一起完滅Access-Control-Allow-Origin
一、下載
vscode 擴充套件應用商店搜尋“cors”下載即可
二、如何使用
1、開啟
右下角會顯示新的 icon,點選他即可開啟內建服務
至此開啟了本地埠 1337 的監聽2.1、ajax 聯調(get 示例 —— lofter)
借用 lofter 的 API 嘗試
$.ajax({
type: "get",
url: "http://www.lofter.com/trade/reward/isOpen",
success: function(res) {
console.log(res);
}
});
複製程式碼
當前請求會報跨域錯誤,將以上轉換為
var VSCODE_CORS_URL = {
key: "http://localhost:1337",
proxy: "http://www.lofter.com"
};
$.ajax({
type: "get",
url:
"http://localhost:1337/trade/reward/isOpen?VSCODE_CORS=" +
JSON.stringify(VSCODE_CORS_URL),
success: function(res) {
console.log(res);
}
});
複製程式碼
返回成功
2.2、ajax 聯調(post 示例 —— 掘金)
借用 juejin 的 API 嘗試
$.ajax({
type: "post",
url: "https://web-api.juejin.im",
contentType: "application/json;charset=UTF-8",
data: JSON.stringify({
operationName: "",
query: "",
variables: {
limit: 10,
excluded: []
},
extensions: {
query: {
id: "5a924f4574e04d67b2ae5df189e8423d"
}
}
}),
success: function(res) {
console.log(res);
}
});
複製程式碼
當前請求會報跨域錯誤,將以上轉換為
var VSCODE_CORS_URL = {
key: "http://localhost:1337",
proxy: "https://web-api.juejin.im",
other: {
requestHeaders: {
"X-Agent": "Juejin/Web"
}
}
};
$.ajax({
type: "post",
url:
"http://localhost:1337/query?VSCODE_CORS=" +
JSON.stringify(VSCODE_CORS_URL),
contentType: "application/json;charset=UTF-8",
data: JSON.stringify({
operationName: "",
query: "",
variables: {
limit: 10,
excluded: []
},
extensions: {
query: {
id: "5a924f4574e04d67b2ae5df189e8423d"
}
}
}),
success: function(res) {
console.log(res);
}
});
複製程式碼
返回成功
3、關閉
三、API
因為設計的非常簡單,所以目前 API 配置僅有3 個
- key(指向當前 cors 起的伺服器地址)
- proxy(指向請求的目標地址)
- other(其他相關配置項)
關於 other,目前給開發者提供了 requestHeaders 的變更
var VSCODE_CORS_URL = {
key: "http://localhost:XX",
proxy: "https://XX",
other: {
requestHeaders: {
"X-Agent": "XX",
Cookie: "XX"
// more
}
}
};
複製程式碼
擴充套件內部預設為 axios,以上 requestHeaders 會被以下原始碼處理,如有相同可被覆蓋
headers: {
'Accept': '*/*',
'Accept-Encoding': 'utf-8',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Host': Host,
'Origin': Host,
'Referer': 'http://' + Host,
'Connection': 'keep-alive',
'Cookie': "",
...requestHeaders
}
複製程式碼
四、自測情況
Type
- Get √
- Post + application/json √
- Post + application/x-www-form-urlencoded √
Lib
- JQ √
- axios √
關於
make:o︻そ ╆OVE▅▅▅▆▇◤(清一色天空)
lofter:zcxy-gs.lofter.com/
sf:segmentfault.com/u/mybestang…
結束語
如有 bug/意見,望提 Issues,如好用請 star~