【外掛】cors:vscode cors 擴充套件 - 解決跨域開發最終版

清一色天空發表於2019-04-01

說在前頭

解決跨域的方式不下 7 8 種,類似的文章我也發表過,但開發路上總會遇到一些奇奇怪怪的限制,讓你始終沒法 easy 除錯,這次我乾脆寫了個 vscode 擴充套件,伴隨開發工具一起完滅Access-Control-Allow-Origin


一、下載

download

vscode 擴充套件應用商店搜尋“cors”下載即可


二、如何使用

1、開啟

ui

右下角會顯示新的 icon,點選他即可開啟內建服務

icon

start

listening
至此開啟了本地埠 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);
  }
});
複製程式碼

ok

返回成功

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);
  }
});
複製程式碼

ok2

返回成功

3、關閉

close


三、API

因為設計的非常簡單,所以目前 API 配置僅有3 個

  1. key(指向當前 cors 起的伺服器地址)
  2. proxy(指向請求的目標地址)
  3. 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▅▅▅▆▇◤(清一色天空)

blog:blog.csdn.net/mcky_love

掘金:juejin.im/user/59fbe6…

lofter:zcxy-gs.lofter.com/

sf:segmentfault.com/u/mybestang…

git:github.com/gs3170981/v…


結束語

如有 bug/意見,望提 Issues,如好用請 star~

相關文章