跨域及方案

CORS : 是浏览器的安全策略.  不是HTTP的.   软件行为可以关掉. 或者搞个插件, 弄个代理转发.

Chrome:启动时添加参数--disable-web-security --user-data-dir=/tmp/chrome-dev
Firefox:通过about:config修改security.fileuri.strict_origin_policy为false

正经点的方法就是 服务器给配个header头 

Access-Control-Allow-Origin: *(允许所有来源)或指定具体域名。
Access-Control-Allow-Methods: GET, POST, PUT, DELETE(允许的HTTP方法)。
Access-Control-Allow-Headers: Content-Type, Authorization(允许的请求头)。
Access-Control-Allow-Credentials: True  是否允许发送凭据(如Cookies、HTTP认证)。如果设置为 true,则 Access-Control-Allow-Origin 不能为 *,必须指定具体域名。
Access-Control-Max-Age: 指定预检请求(OPTIONS)的缓存时间(秒)。浏览器会缓存预检请求的结果,减少重复请求
Access-Control-Expose-Headers: 指定响应头可以被前端代码访问。默认情况下,浏览器只能访问简单的响应头(如Content-Type)

为啥要服务器配头? 

CORS 实际上报文已经发出去了,服务器接受正常返回的情况下, 被浏览器检查拦截了. 

拦截的策略是什么?

域名不同, 含子域名;  端口不同; 协议不同;

有没有别的办法? 

JSONP,  只支持GET, 就是script 标签的src 属性, 请求时 加上callback=xx 字段,返回数据callback({xx})

websocket , 协议不限制同源, 但是浏览器实现要求同源。

受跨域影响的标签 script  img link iframe form ; script 可以加载跨域的脚本,但是js动态创建的标签 只能用get 请求获取jsonp 形式数据; img 加载的跨域图片无法使用js获取像素数据;link加载的css文件无法通过js修改css内容,iframe 跨域嵌入的网页无法直接交互;form提交的数据无法用js获取返回值。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值