因为项目需要,目前需要通过react ajax请求,实现请求其它域的登录URL,将用户写入到其它域的cookie中,之后herf连接该网址的其他内容的时候,便可直接跳转到对应内容,无需跳转到登录页面。

1、cors和jsonp

何为跨域,及当一个请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。在做跨域请求的时候,cors和jsonp我都尝试过了。

1.1cors

cors(Cross-Origin Resource Sharing 跨源资源共享)。简单请求时,浏览器会直接发送跨域请求,并在请求头中携带Origin 的header,表明这是一个跨域的请求。服务器端接到请求后,会根据自己的跨域规则,通过Access-Control-Allow-Origin和Access-Control-Allow-Methods响应头,来返回验证结果。如果验证成功,则会直接返回访问的资源内容。

1.2jsonp

jsonp(Json with Padding 填充式JSON或参数式JSON),JSONP的基本思想是,网页通过添加一个<script>元素,向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。
举一个案例来说明。
假设客户期望返回JSON数据:["customername1","customername2"]。
如客户想访问 : http://localhost:3000?jsonp=callbackfunction。
真正返回到客户端的数据显示为: callbackFunction(["customername1","customername2"])。

最后还是采用的cors实现了,jsonp虽然请求成功了,但是针对callback函数,我这边还没有解决。

2、cors在后端的配置

2.1 nodejs的配置

//该代码所放置的位置需要靠前,如果后端有redirect跳转链接,则需要将此代码放置在redirect前
app.use(function(req, res, next) {res.header("Access-Control-Allow-Origin", "*" );//若需要加入withCredentials,则需要将*改为具体域名res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");next();
});

2.2 php的配置

 <?php header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
//主要为跨域CORS配置的两大基本信息,Origin和headers

3、react 前端请求

前端若采用ajax请求,get或者post数据,按照正常的方式即可。
 $.ajax({//需要跨域的urlurl:"****",method: "POST",crossDomain:true,xhrFields:{withCredentials:true},beforeSend:function(xhr){xhr.withCredentials=true;},success: function (data) {console.log(data);}.bind(this),error: function (xhr, status, err) {console.log(err);}.bind(this)}); 

4、结束语

利用cors跨域,既可以实现post也可以实现get,若利用jsonp实现跨域,仅可实现get方式的跨域访问。而且cors方式,仅需要在后端配置,前端照常访问即可,方式还是比较简单的。

react中 ajax跨域请求相关推荐

  1. java中ajax跨域请求

    最近在项目中要使用到跨域请求验证码然后再提交的问题.由于验证码是存在session里的,而跨域请求在后台获得的session每次都不一样,导致验证码无法比对.网上查找的方法都比较含糊,最后解决了决定写 ...

  2. jQuery中ajax跨域请求

    背景介绍: 现在做的课题要实现在一个没有部署在服务器上的网页中,使用ajax来加载已经 部署在服务器上的一个服务提供的数据. 先看静态页面的代码: <html><head>&l ...

  3. ajax跨域请求,请求成功但是走error

    js中ajax跨域请求其他接口,get请求方式,请求成功但是还是走error. 处理如下,使用 下面的方式请求 dataType: "jsonp", jsonp:'callback ...

  4. jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)

    jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...

  5. jq中ajax请求跨域,用JQuery实现简单的Ajax跨域请求

    前一阵发过一篇利用ExtJs的ScriptTagProxy实现Ajax跨域请求的文章,这几天看了一下Jquery,发现如果用JQuery中的getScript其实更简单(jquery 1.2.6版本) ...

  6. ajax请求时cookie,ajax跨域请求中的cookie问题

    update 另一个问题 ajax在进行复杂请求如PUT,POST,DELETE等时,当请求为cross domain request是,会先发一个OPTIONS请求确认服务器的跨域支持情况,在发送原 ...

  7. ajax跨域请求 html5,HTML5中使用postMessage实现Ajax跨域请求的方法

    由于同源策略的限制,Javascript存在跨域通信的问题,典型的跨域问题有iframe与父级的通信等. 常规的几种解决方法: (1) document.domain+iframe: (2) 动态创建 ...

  8. js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...

    先来个表.页面太多对不起我也不知道这张表是从哪个博客保存过来的,所以无法注明博客地址.非常抱歉.URL说明是否允许通信 http://www.a.com/a.jshttp://www.a.com/b. ...

  9. JSONP实现Ajax跨域请求

    前言 由于浏览器存在同源策略的机制,所谓同源策略就是阻止从一个源(域名,包括同一个根域名下的不同二级域名)加载的文档或者脚本获取/或者设置另一个源加载的文档属性. 但比较特别的是:由于同源策略是浏览器 ...

最新文章

  1. Docker进阶(制作镜像,共享卷,网络通信,私有仓库)
  2. Ajax学习整理笔记
  3. MySQL专题—— 从认识索引到理解索引【索引优化】
  4. 2013年网络安全事件盘点
  5. facebook人脸照片_为什么您的Facebook照片看起来如此糟糕(以及您可以如何做)...
  6. 每日一题——leetcode237 删除链表中的结点
  7. 串行测试 并行测试_如何通过CircleCI测试并行性增加构建时间
  8. Vim-latex 插件 的安装
  9. c# ComboBox禁用鼠标滚轮
  10. jetson windows_生命不息,折腾不止:Jetson Nano填坑之软件篇
  11. python 时间处理_Python如何进行时间处理
  12. CentOS6.5 安装+ Tengine + PHP + MySQL
  13. codevs——1436 孪生素数 2
  14. iis 无法启动计算机,win10系统iis无法启动的详细步骤
  15. matlab中的插值函数
  16. c语言二维指针类型转换,二维数组和指针(C语言)
  17. 计算机函数的应用知识点总结,计算机应用 常用函数的使用 常用函数的使用.pptx...
  18. JavaScript 制作12小时进制的时钟特效
  19. mysql 按月和年累加_2020年5月播出的电视剧汇总,按时间先后顺序排列
  20. Windows10 输入法 Microsoft IME占用CPU过高,而且无法切换输入法,只能输入英文

热门文章

  1. 汉画轩深度结合区块链技术 让国学真正活起来
  2. Cannot access ‘phone‘ before initialization
  3. 范式球(norm ball),范式锥,欧式球,椭球
  4. 二叉查找树BST基本操作(一)
  5. 人机交互-11-往年试卷
  6. python 调用matlab的.m文件
  7. Linux系统重设开机秘码-------忘记linux开机密码
  8. Python 多态,概念与示例,精简篇
  9. 铁死亡,究竟该如何检测?- MedChemExpress
  10. 在计算机中 汉字系统把一个汉字表示为,计算机问题汉字系统在计算机内把一个汉字表示 – 手机爱问...