必应壁纸的官方api:

https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN

但是在我们自己的前端发起ajax请求是会触发同源策略的,禁止访问,属于跨域

那么就可以使用nginx的正向代理来实现对必应的访问

在内部添加location,这里是对访问路径的匹配,当路径匹配到/proxy_bing/时

  1. rewrite 正则 替换式 flag
  2. 将协议://host:port/ 之后的内容进行正则匹配
  3. 比如我的url为https://www.1zilc.top/proxy/?yes=1,那么只匹配/proxy/?yes=1部分
  4. $1表示正则中第一个()中匹配到的内容,以此类推
  5. 如果替换式以”http://”或”https://”开始,将不再继续处理,这个重定向将返回给客户端。
  6. break 停止处理后续rewrite指令集,并不在重新查找。(还有last、redirect、permant)
  7. 但是本location的指令还是会执行,所以就会进入反向代理模块,将请求发送至真正的主机,这里是https://cn.bing.com
  8. 如果想要nginx允许跨域,在location块中添加 add_header Access-Control-Allow-Origin *; 即可

通过nginx正向代理可以实现获取必应壁纸,但是也可以自己实现一个正向代理服务

用node做了一个获取必应壁纸的服务,本质就是设置Access-Control-Allow-Origin为*允许前端跨域访问后端,然后后端请求必应,再将结果进行必要的封装返回给前端

请求地址:

https://www.1zilc.top/proxy_bing/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN
参数描述(get)
format(默认xml) 返回数据格式 js || xml
idx(默认0) 请求图片截止天数 0为今天,昨天为1,max<=7
n(默认1) 返回图片数量,max<=8
mkt(默认空) 地区 可设zh-CN

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注