• 事情是这样的,我准备复制一个资源下载类的网站。第一步肯定是爬取目标网站的资源了。我在用python写爬虫的时候,当我提取完网页中的基础数据之后。就发现,目标网站后面大部分的数据都是通过有规律的api返回的json数据源。这个时候作为一个白飘党,我就在想能不能直接白嫖对面的api,直接拿来用呢?然后,在前端遇到了些问题,我感觉以我现在的技术水准无法解决。

前端axios请求示例

axios({
        method: "post",
        // url: "https://msdn.itellyou.cn/Index/GetCategory",
        url: "https://msdn.itellyou.cn/Index/GetCategory",
        headers: {
          "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
          "xsrfCookieName":"UM_distinctid=175ea4b3dea63-0cec85404da311-6f5b7628-1fa400-175ea4b3deb9f1; _ga=GA1.2.1819646167.1605953601; never_show_donate_auto=true; CNZZDATA1605814=cnzz_eid%3D349703014-1605951993-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1606138593; Hm_lvt_8688ca4bc18cbc647c9c68fdaef6bc24=1605953601,1606044268,1606138809; _gid=GA1.2.794892782.1606138809; .AspNetCore.Antiforgery.kC_Kc8he0KM=CfDJ8Jw19B-OaM1KveQHPjyyKOMilfzCVKOCa3wxqXt2cA3jg9TAPpA5Fyna-dNipm1VSXQ5LKCy7QPtcJ9DASbk0KXNALze7BkIq02mT97GbmSPwwJy6TByDHCwT-iTmhhVkZodDpyiP5QbM4PLn3pkM2k; _gat=1; Hm_lpvt_8688ca4bc18cbc647c9c68fdaef6bc24=1606140996",
          "x-csrf-token":"CfDJ8Jw19B-OaM1KveQHPjyyKOOd18a3pjYkGzjpg6yx70hqNG9_vQa70qpa-qQz2D7Eh97RRGkKZgMTkIxKiSSShMstxQsKFw5SS9vir9Rhbqah0HWI45jeBcng-Wa0IPba6xDga6ROzOfyBJAUQ3n7C9E",
          "accept": "*/*",
          "accept-encoding": "gzip, deflate, br",
          "accept-language": "zh-CN,zh;q=0.9",
          "content-length": "39",
          "origin": "https://msdn.itellyou.cn",
          "referer": "https://msdn.itellyou.cn/",
          "sec-fetch-dest": "empty",
          "sec-fetch-mode": "cors",
          "sec-fetch-site": "same-origin",
          "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4315.4 Safari/537.36",
          "x-requested-with": "XMLHttpRequest",
      }).then((response) => {
        console.log(222222);
        console.log(response);
# 第一个错误
Refused to set unsafe header
# 第二个错误
has been blocked by CORS policy

通过搜索,得出一下结论。
w3c规定,当请求的header匹配以下不安全字符时,将被终止

  • 怎么才能突破这个限制呢?
前言事情是这样的,我准备复制一个资源下载类的网站。第一步肯定是爬取目标网站的资源了。我在用python写爬虫的时候,当我提取完网页中的基础数据之后。就发现,目标网站后面大部分的数据都是通过有规律的aip返回的json数据源。这个时候作为一个白飘党,我就在想能不能直接白嫖对面的api,直接拿来用呢?然后,在前端遇到了些问题,我感觉以我现在的技术水准无法解决。前端axios请求示例axios({ method: "post", // url: "https://msdn text(默认):返回纯文本 json:返回一个 JSON 对象(如果 JSON 无效则返回错误) 还有第四个参数,作为发生错误时将调用的回调(HTTP 代码与 200 OK 不同)。 完整示例: xhr.load( 'http://lib.ca.ca/ip.pi/', 补充知识:VUE axios请求跨域时没有带上cookie或者每次cookie都改变 这两天用VUE写管理后端时,碰到一个奇葩问题: 我本地使用dev配置开发的时候 请求可以带上cookie信息  打包出来部署在服务器上 请求就没带上cookie信息。 然后自己慢慢排查,联合后端同事,排查这个cookie问题,前端也配置了 axios.defaults.withCredentials = true; 后端也配置了跨域cookie,然后就是没用,每次后台获取到的ses
axios做请求拦截的时候,加了个 this.$ajax.interceptors.request.use(config=> { config.headers.Cookie = 'JSESSIONID=B8CC9786DD7EFA8DAD24E525F3442DF1' return config 复制代码然后报错Refused to set unsafe header ...
前后端完全分离的项目,前端使用Vue + axios,后端使用SpringMVC,容器为Tomcat。 使用CORS协议解决跨域访问数据限制的问题,但是发现客户端的Ajax请求不会自动带上服务器返回的Cookie:JSESSIONID。 导致每一个Ajax请求在服务端看来都是一个新的请求,都会在服务端创建新的Session(在响应消息头中设置Set-Cookie:JSESSIONID=xxx)。 而在项目中使用了Shiro框架,用户认证信息是放在Session中的,由于客户端不会把JSESSIO