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