ajax跨域解决方案
- jsonp 2. cors 3. iframe 4. websocket 5. window.name 6. nginx
新建index.html
1 |
|
1.core.js
1 | const http = require('http'); |
配置简单跨域设置
1 | // 1.core.js |
OPTIONS请求
1 | <!--index.html--> |
允许访问,但是header需要设置一下,如下:
1 | // 1.core.js |
设置了header里面的token之后
第一次是OPTIONS,发送了一个试探请求
第二次是GET,能够获取到res返回的值
发送复杂请求
1 | <!--index.html--> |
1 | // 1.core.js |
设置Cookie
http 无状态的 没法记住状态 一般会借助cookie 通过服务器设置cookie 每次请求的时候会带上cookie
1 | <!--index.html--> |
1 | // 1.core.js |
以上为ajax跨域相关的头设置
反向代理
nginx 反向代理 就是针对用户是透明的
webpack proxy 反向 代理接口 我访问的还是以前的接口 主要的功能就是缓存 cdn 也是一个反向代理,感觉用户访问的是主机,其实访问的是各个子代理站点 (缓存+反向代理)
webpack 它是如何实现反向代理的,核心就是创建代理服务器
从 2.proxy.js 服务器 去请求 5000.js 服务器,通过访问2.proxy网站去请求5000.js, 2.proxy相当于中间层
1 | // 2.proxy.js |
新建5000.js
1 | // 5000.js |
开启服务: 1、node 5000.js 2、nodemon 2.proxy , 访问端口 3、localhost:3000,浏览器打印出I am 5000 port
能干什么?
现在希望一个服务器上可以部署多个网站 nginx
如果我现在要部署2个网站
www.jf1.cn 那么默认访问这个端口是80
www.jf2.cn 那么默认访问这个端口也是80
中间会有一个代理机 proxy 如果是www.jf1.cn 会到3000端口上 , www.jf2.cn会到3001端口上 感觉访问的是80 其实被分配到了其他的端口上。
实行:拿到当前访问的域名,根据域名来访问
根据host不同返回不同的网站,主要依靠的就是反向代理
反向是针对浏览器透明 正向是针对服务器透明
302临时重定向
1 | // 根据内核跳转页面 302 临时重定向 |
运行 nodemon 4.agent.js 浏览器访问 localhost:3000
多语言
根据客户端所支持的语言返回对应的结果
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
客户端可以自行配置语言 不同的语言组成不同的网站