关于前端发起请求

问题一 JS发起请求的方式

方法一

JS代码中发起请求的方式普遍为AJAX

该技术在 1998 年前后得到了应用。允许客户端脚本发送HTTP请求(XMLHTTP)

方法二

script标签请求

方法三

通过HTML的方法

通过js自动在jsp中创建一个form表单,并给其method属性为post

function post(URL, PARAMS) {
var temp = document.createElement("form");
temp.action = URL;
temp.method = "post";
temp.style.display = "none";
for (var x in PARAMS) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = PARAMS[x];
temp.appendChild(opt);
}
document.body.appendChild(temp);
temp.submit();
return temp;
} $(".submit_d a").click(function(){
var data = ($(this).attr("class")).split("-");
var series = data[0];
var discharge = data[1];
var carriageNum = data[2];
var seatNum = data[3];
var gear = data[4];
var cost = data[5];
var pictureUrl = data[6];
var id = data[7];
post(ctx+"/order/rentcar.action",{"series":series,"discharge":discharge,"carriageNum":carriageNum,"seatNum":seatNum,"gear":gear,"cost":cost,"pictureUrl":pictureUrl,"id":id});
});

问题二 设置header、cookie

CSRF发起的请求可以设置cookie(token)、header么

CSRF或者jsonp,利用时需要跨域。

跨域首先排除掉AJAX方法

AJAX如何跨域

  1. CORS

    简单来说,请求时浏览器检测到跨域,会带上Origin,得到服务器的准许后才能够获取数据。

    CORS不仅设置了AJAX跨域时的域名,还有请求方法、返回Header获取字段、允许发送cookie等

    浏览器同源政策及其规避方法(阮一峰)

    CORS需要大多数情况下,前端是无感知的,这是后端服务器做的部分。
  2. JSONP

    JSONP能够跨域的原因在于 标签允许跨域。

    通过script拿到数据,形如

    将会返回 foo(data)打在前端

    前端再定义function foo(){},返回前端时就直接调用并传入数据。

    缺点:

    限于GET方法

    一样无法自定义设置header和cookie。
  3. 代理

    本地设置代理,ajax请求本地代理,再由本地通过非ajax方法去请求数据,返回给前端。不考虑。但是在某些情况下可以用,比如payload中需要拼接由跨域获取的数据。

这三种方法都是JS/AJAX跨域的方法。

在CSRF/JSONP劫持的运用上,CORS跨域被限制的情况下不存在了,因此AJAX的GET/POST一堆灵活操作没法用。

JSONP也无法设置header、cookie等。

FORM表单请求的方式当然也没法设置header。

结论 CSRF/JSONP劫持中所用请求难以自定义header、cookie

谈CSRF与JSONP设置header问题的更多相关文章

  1. 解决AJAX跨域:1、利用JSONP;2、JS设置Header

    一.利用JSONP: 首先来看看在页面中如何使用jQuery的ajax解决跨域问题的简单版: $(document).ready(function(){ var url='http://localho ...

  2. 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)

    关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...

  3. django 浅谈CSRF(Cross-site request forgery)跨站请求伪造

    浅谈CSRF(Cross-site request forgery)跨站请求伪造(写的非常好) 本文目录 一 CSRF是什么 二 CSRF攻击原理 三 CSRF攻击防范 回到目录 一 CSRF是什么 ...

  4. 浅谈CSRF(Cross-site request forgery)跨站请求伪造

    目录 浅谈CSRF(Cross-site request forgery)跨站请求伪造 CSRF是什么 CSRF攻击原理 CSRF攻击防范 浅谈CSRF(Cross-site request forg ...

  5. 与你相遇好幸运,Postman设置Header不生效问题解决

    POstMan安装地址 安装完 , Postman 设置Header的Referer不生效 , 提示 Restricted Header (use postman interceptor) 时 , 要 ...

  6. IOS NSURLRequest 设置 Header

    https://my.oschina.net/wolx/blog/406092 工程中的请求,需要设置Header,请求令牌才访问,NSURLRequest 请求没有直接设置header 的方法,需要 ...

  7. Spring 使用 feign时设置header信息

    最近使用 SpringBoot 项目,把一些 http 请求转为 使用 feign方式.但是遇到一个问题:个别请求是要设置header的. 于是,查看官方文档和博客,大致推荐两种方式.也可能是我没看明 ...

  8. NodeJS设置Header解决跨域问题

    转载: NodeJS设置Header解决跨域问题 app.all('*', function (req, res, next) { res.header('Access-Control-Allow-O ...

  9. golang-http 请求---设置header与直接发

    背景 现在各种软件到处都是,写代码难免有时候需要http 调用其他的接口. 其实这个东西还挺常用,虽然很简单,但是写的时候 又忘,就像是提笔忘字,索性总结一下吧. 不需要设置header属性的http ...

随机推荐

  1. IO-file-05 文件夹的创建

    package com.bwie.io; import java.io.File; /** * 创建目录 * 1.mkdir:确保上级目录存在,不存在创建失败 * 2.mkdirs:上级目录可以不存在 ...

  2. Idea生成的的第一个eureka注册中心服务器

    操作: 1.file->new->project     Spring Initializer ->default         点击next 2.输入     Group     ...

  3. PAT(B)1015 德才论(C)

    题目链接:1015 德才论 (25 point(s)) 分析 由题意可知,需要将考生按照分数进行一个分类(级),然后在每一级中按照分数排序.输入的时候将每个人的总分,等级和录取人数先算出来.然后按照自 ...

  4. STM32的I2C通讯过程

    使用I2C外设通讯时,在通讯的不同阶段它会对“状态寄存器(SR1 及SR2)”的不同数据位写入参数,通过读取这些寄存器标志来了解通讯状态. 1.主发送器 可使用STM32标准库函数来直接检测这些事件的 ...

  5. Go part 5 结构体,方法与接收器

    结构体 结构体定义 结构体的定义只是一种内存布局的描述(相当于是一个模板),只有当结构体实例化时,才会真正分配内存空间 结构体是一种复合的基本类型,通过关键字 type 定义为 自定义 类型后,使结构 ...

  6. sql 视图的好处

    第一点:使用视图,可以定制用户数据,聚焦特定的数据. 解释: 在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没有任何意义, ...

  7. 编程模型&编程思想

    编程模型 1.面向对象编程OOP 2.面向切面编程AOP Java静态接口,Java动态代理,字节码提升. 面向切面的两个方面: 拦截判断:方法,注解,参数,异常 拦截执行:前置,后置,返回,异常 3 ...

  8. mysql-8.0.16-winx64的最新安装教程

    最近刚学习数据库,首先是了解数据库是什么,数据库.数据表的基本操作,这就面临了一个问题,mysql的安装,我这里下载的是64位的,基于Windows的,以下是在我电脑上的安装过程,希望可以帮助到大家. ...

  9. fastclick插件中存在的bug

    1.在vue项目中安装fastclick插件 npm install --save fastclick 2.在main.js中引入并绑定到body import FastClick from 'fas ...

  10. el-select 可选择可输入

    <el-select v-model="saveWardForm.wardCode" placeholder="" filterable @blur=&q ...