数据交互 跨域问题

JavaScript的同源政策是互联网安全的基石,即不一样源的网页之间的资源不能彼此调用彼此的资源的,判断是否同源的依据是:
协议相同,是http仍是https。
域名相同,一级,二级等是否相同
端口相同,服务器默认端口是省略掉了的80端口,用其余端口则须要显式指定html

而事实上为了提高网页性能,咱们经常须要打破同源限制,好比单独假设图片服务器以突破浏览器同源资源请求数。json

 

跨域请求最经常使用的有JSONP和CORS跨域

JSONP浏览器

JSONP的说明见:http://www.cnblogs.com/zhouxiaohouer/p/7900602.html安全

 

CORS
如今浏览器(IE10+)基本上都支持了CORS,因此CORS的关键就是服务器是否认义了CORS的接口,所谓接口无非就是是否在响应头里设置了跨域许可Access-Control-Allow-Origin,
"'Access-Control-Allow-Origin':'*'"表示容许任何客户端访问。服务器

 

CORS的具体流程以浏览器的简单请求说明cors

  在请求头里写入origin字段,标注同源信息,即协议+域名+端口,此请求到达服务器后,服务器比对origin同源信息是否在跨域许可Access-Control-Allow-Origin范围内,在的话就正常走请求流程,不在的话就返回一个错误,而且被XMLHttpRequest的onerror回调函数捕获。注意,这种错误没法经过状态码识别,由于HTTP回应的状态码有多是200。函数

    router.post('/poststh',(req,res,next)=>{
        res.header('Access-Control-Allow-Origin', '*')
        console.log(req.body.filter)
        goodsModel.find((err,doc)=>{
            if (err) {
                res.json({
                    status:1,
                    msg:err,
                })
            }else{
                res.json({
                    status:0,
                    msg:req.body.filter
                })
            }
        })
    })

CORS跨域的简单请求和非简单请求能够参考阮老师的文章:http://www.ruanyifeng.com/blog/2016/04/cors.htmlpost

相关文章
相关标签/搜索