博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器跨域问题
阅读量:5049 次
发布时间:2019-06-12

本文共 1853 字,大约阅读时间需要 6 分钟。

跨域限制原因:

为了防止攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

例子:

  • 假如我们访问完银行的网站,浏览器保存返回的cookie。这里用nodeJs写一个http服务称为server1.js。
const http = require('http')//银行服务http.createServer(function(request,response){    console.log('request come',request.url)    response.writeHead(200,{      //  'Access-Control-Allow-Origin':'http://localhost:8888' //这里如果放开就可以进行跨域    })    response.end('find the account have 123')}).listen(8887)console.log('server listening on')
  • 然后不小心访问到黑客的嵌入了邪恶JavaScript脚本的网站。该网页嵌入了一个脚本会请求银行网站获取用户的银行余额。这里用nodeJs写一个http服务称为server2.js进行模拟,它会将服务器的test.html网页返回。
const http = require('http')const fs = require('fs')//黑客网站服务http.createServer(function(request,response){    console.log('request come',request.url)    const html = fs.readFileSync('test.html','utf8')     //读取html返回    response.writeHead(200,{        'Content-Type':'text/html'    })    response.end(html)}).listen(8888)console.log('server listening on')
  • 以下是模拟盗取的黑客网页。
  • 这时浏览器虽然仍会执行黑客网站上的脚本进行ajax请求银行服务查用户余额,但浏览器由于同源策略禁止跨域请求不会解析返回的结果,所以会在控制台提示以下信息。

    1334210-20180823005151580-1015800305.png

  • 当如果请求的方法不是get或者post的时候,或者使用自定义的请求头访问时,也会为了保护请求的服务器安全,浏览器也会进行拦截。
  • 因此可以改变server2.js来使跨域允许。
const http = require('http')//银行服务http.createServer(function(request,response){    console.log('request come',request.url)    response.writeHead(200,{        'Access-Control-Allow-Origin':'*',                             //设置允许跨域的原始地址        'Access-Control-Allow-Headers':'X-Test-Cors',    //设置允许跨域的请求头        'Access-Control-Allow-Methods':'PUT',            //设置允许跨域的请求方法        'Access-Control-Max-Age':'1'                     //设置允许跨域时不用预请求的时间    })    response.end('find the account have 123')}).listen(8887)console.log('server listening on')
  • 特别要注意的是:当跨域的请求不是get和post方式时,会多产生一个预请求在正式请求前。而Access-Control-Max-Age时间内就不会再发起预请求。
    1334210-20180823204047247-325324068.png

转载于:https://www.cnblogs.com/peterpoker/p/9521256.html

你可能感兴趣的文章
ubuntu 配置拼音输入法步骤
查看>>
python:OS模块
查看>>
2014北京站小记
查看>>
天购新玩法 引领电商发展新潮
查看>>
网上删除所有数据文件的恢复情况
查看>>
Linux--安装过程中的根文件系统的分析
查看>>
一步一步写算法(之hash表)
查看>>
Java中Map的使用
查看>>
java内存分析总结
查看>>
EBS R12 LOG files 位置
查看>>
《集体智慧编程》学习笔记
查看>>
其中imagelist.txt和train.txt的格式如下注释所示
查看>>
手机端rem
查看>>
U-editor文件上传
查看>>
selenium+python之iframe学习笔记
查看>>
day1-变量、循环、字符编码
查看>>
进程与线程的表示,属性,守护模式
查看>>
鑫安财富项目随记6--如何进行多项删除
查看>>
squid
查看>>
(42)zabbix使用IT services 了解服务器SLA整体情况
查看>>