必应壁纸的官方api:
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN
但是在我们自己的前端发起ajax请求是会触发同源策略的,禁止访问,属于跨域
那么就可以使用nginx的正向代理来实现对必应的访问
在内部添加location,这里是对访问路径的匹配,当路径匹配到/proxy_bing/时
- rewrite 正则 替换式 flag
- 将协议://host:port/ 之后的内容进行正则匹配
- 比如我的url为https://www.1zilc.top/proxy/?yes=1,那么只匹配/proxy/?yes=1部分
- $1表示正则中第一个()中匹配到的内容,以此类推
- 如果替换式以”http://”或”https://”开始,将不再继续处理,这个重定向将返回给客户端。
- break 停止处理后续rewrite指令集,并不在重新查找。(还有last、redirect、permant)
- 但是本location的指令还是会执行,所以就会进入反向代理模块,将请求发送至真正的主机,这里是https://cn.bing.com
- 如果想要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 |
Its like you read my mind! You appear to know so much about this, like you wrote the book in it or something. I think that you can do with a few pics to drive the message home a little bit, but other than that, this is fantastic blog. A great read. I’ll certainly be back.