HTTP请求跨域问题,解决模棱两可。

libevent evhttp使用 一、libevent evhttp使用 1、基本流程 http服务端使用到的借口函数及流程如下 1)、创建event_base和evhttp struct event_base *event_base_new(void); struct evhttp *evhttp_new(struct event_base *base); 2)、绑定地址和端口 int evhttp_bind_socket(st... 阅读详情

什么是跨域?就不说了,一搜一大堆。

就讲讲如何跨域,本文对一些前辈的博客进行总结精简,尽量简洁的表述粗来。

一、CORS微笑

是W3C制定的为解决跨域请求的一个规范。直接上代码

var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://www.a.com",true);
    xhr.send();


其实很简单,即发送请求时,请求头中有一个"origin:http://www.b.com."

服务器响应头中返回"Access-Control-Allow-Origin:http://www.b.com 或 *"

"Access-Control-Request-Method":"PUT,POST"

即表示跨域请求允许,请求成功生气。

如果在回应的头信息中没有"Access-Control-Allow-Origin"字段则会报错,请求失败哭。

优点:支持所有请求方式;方式简单。

缺点:低级古老的浏览器不支持。

二、服务器代理请求微笑

顾名思义,就是首先请求同域服务器,给同域服务器代理脚本,由代理脚本来完成跨域请求然后把结果返回客户端。

优点:支持GET和POST

缺点:处理复杂

三、JSONP方式微笑

<script type="text/javascript">
    function callFunc(data){
        //处理获得的json数据
	console.log(data);
    }
</script>
<script src="http://example.com/data.php?callback=callFunc"></script>

因为src的url是一个后台脚本访问后会被执行,返回的JSON以字符串形式包含在回调函数中,

返回的字符串放入script标签中则执行回调函数,返回的JSON数据也作为实参传入了回调函数。

以上应该算是比较常见的JSONP的原生实现方法,也有一些对此做了封装的框架,比如jquery如下:

$.ajax({
  type : "GET",
  url : "http://zhangzhanyu.nfreehost.com/jsonp.php",
  dataType : "jsonp",
  success : function(json) {
    alert(json.msg);
  }
});


请千万不要被jquery对JSONP的封装为$.ajax就误以为JSONP的跨域访问也是AJAX请求,其实两者一点关系都没有!!

我从一篇文章中看到过有人推荐的一种插件(fetch-jsonp)

fetchJsonp(Url)
.then(response => {return response.json();})
.then(json => {resolve(json);})
.catch(err => {reject({errMsg: '调用接口失败', success: false});})


利用script标签支持跨域的特性,实现跨域请求。

优点:古老的浏览器也支持

缺点:仅支持GET

四、利用iframe完成跨域请求微笑

举个栗子,父页面(http://a.test.com/a.html)中嵌入iframe子页面(http://b.test.com/b.html)

父页面(http://a.test.com/a.html)代码:

<iframe id = "iframe" src="http://b.test.com/b.html" onload = "loadIframeData()"></iframe>


下面讲下如何在两个页面之间发送和接收数据:
发送数据:
 A(父页面) -> B(iframe):

document.getElementById('iframeId').contentWindow.postMessage(JSON.stringify(data), '*'); 


第一个参数传递的数据json化,第二个指定允许接收的域名,*表示允许任意域名
B(iframe )-> A(父页面):

window.parent.postMessage(JSON.stringify(data), '*');


父子页面监听接收数据

if (window.addEventListener) {
  window.addEventListener('message', function(event) {
    if(event.origin == '父页面url'){
try {
          const data = JSON.parse(event.data);
    } catch(e) {
    }
  }, false);
}else{
  window.attachEvent('onmessage',funtion(event){
    if(event.origin == '父页面url'){
try {
          const data = JSON.parse(event.data);
    } catch(e) {
    }
  }, false);
}


优点:通过iframe去完成跨域有其最显著的优势,就是在A页面向B服务器去进行跨域请求时,B服务器需要进行比较多的处理才能返回结果的时候,利用iframe去完成是非常好用的。缺点:如果iframe页面中有页面跳转的情况下,用户想回退父页面出现的结果是iframe页面回退了,但父页面URL和页面都没发生变化(需要在跳转前remove当然iframe,然后重新插入iframe到新的src,防止污染父页面url)。另外这样的做法有时候像多了一层代理,因此一方需求改动,则需要更改比较多的地方。

nginx实现跨域访问遇到的问题 什么是最好的跨域实现方式?nginx实现跨域访问遇到的系统环境问题解决方法,踩过的坑分享给大家 立即下载

相关推荐

如何用Nginx解决前端跨域问题

在开发静态页面时,类似Vue的应用,我们常会调用一些接口,这些接口极可能是跨域,这篇文章主要介绍了如何用Nginx解决前端跨域问题,非常具有实用价值,需要的朋友可以参考下

解决C++的HTTPLIB库的跨域访问与OPTIONS的问题

一瞬心肺停止了 ,不过这难不倒我,修改一下代码(黑色方框内为新增的)今天心血来潮想写个简易的API,想几个请求头token做一下验证。问题解决了,ummmm,接下来应该奖励自己摸一会鱼了吧……检查了一下是没有找到OPTIONS的/test的。编译一下等待通过,然后再打开一下前端检测一下。———————本文完———————直接访问API检测一下能不能用。哦对不能忘记看看后台有没有内容。不错看上去没有什么毛病。好耶可以获取到API了。也有内容那就是成功了!意料之中依旧是爆炸了。

qq_37226004的博客 2335

从SAR信号到洪涝地图:基于Sentinel-1数据的水体快速提取实战

本文详细介绍了如何利用Sentinel-1 SAR数据快速提取水体信息并生成洪涝地图的实战方法。通过预处理五部曲和SDWI指数计算,结合具体案例展示了SAR技术在洪涝灾害应急监测中的高效性和准确性,为救援决策提供关键支持。

weixin_29201313的博客 462

http简单跨域请求和复杂跨域请求问题及解决方案

问题 在当前页面使用AJAX请求跨源 方案 CORS,属于跨源 AJAX 请求的根本解决方法 简单跨域请求:服务器端设置Access-Control-Allow-Origin 复杂跨域请求:服务器端设置Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers、Access-Control-Max-Age等 服务器配置: response["Access-Control-Al

山水好风光的博客 2366

【ZZULIOJ】郑州轻工业大学oj题解整合

写在前面 关于ZZULIOJ题解 学习编程,想要巩固无非就是刷题或者做项目,然后因为我大一开始是刷郑轻的题目,就想着自己整合一下自己写的题目。既是复习也是笔记吧。 题解(内有题目描述) 1000 整数a+b 1001 植树问题 1002 简单多项式求值 1003 两个整数的四则运算 1004 三位数的数位分离 1005 整数幂 1006 求等差数列的和 1007 鸡兔同笼 1008 美元和人民币 1009 求平均分 1010 求圆的周长和面积 1011 圆柱体表面积 1012 求绝对值 1013 求两点间

蒟蒻乱写的博客 29万+

从‘眼花缭乱’到‘心中有数’:rs-fMRI统计分析全流程避坑指南(附DPABI操作截图)

本文详细解析了rs-fMRI统计分析的全流程,从质量控制到统计模型选择,再到多重比较校正和结果解读。特别针对DPABI软件操作中的常见陷阱提供实用指南,帮助研究者避免FDR和GRF校正等关键环节的错误,实现从数据混乱到清晰分析的转变。

weixin_33686714的博客 398

C++ libevent 与 Vue 跨域问题解决 2024/3/11

如果只是简单请求,那么该方式解决很简单,只需要在reply的header中添加 Access-Control-Allow-Origin 头即可。具体使用代码如下:当然,这样子做是很危险的,具体怎么操作可以看别的blog,这里也没有深入研究。

weixin_57069064的博客 579

CDH Hue连接Hbase报错TSocket read 0 bytes

问题描述 安装好CDH集群后,在Hue中查看HBase信息时,Hue界面报错如下: Api 错误:TSocket read 0 bytes Hue日志报错: exceptions_renderable ERROR Potential trace: [('/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hue/apps/hbase/src/hbase/api.py', 46, 'query', 'return getattr(self

邢为栋 3492

解决http请求跨域问题

      一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准。在接口方面涉及到浏览器访问其他项目时也会碰到跨域问题,这个时候我们就要去解决它。        了解下什么是跨域?        概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 URL ...

T_james的博客 1万+

ADS交叉耦合振荡器VCO仿真

本文主要参考视频中如何使用进行ADS交叉耦合振荡器仿真和分析,由于视频中有诸多错误和视频清晰度较低,虽然视频博主及时改正,为了节省学习时间,可以直接参考本文。

qq_32589131的博客 5424

海康工业相机SDK+OpenCV实战:图像采集与Mat格式转换优化指南

本文深入探讨了如何高效利用海康工业相机SDK与OpenCV进行图像采集与处理。重点解析了从相机RawData到OpenCV Mat格式转换的核心优化技巧,包括像素格式匹配、内存零拷贝管理以及彩色图像BGR/RGB转换,旨在解决工业应用中常见的性能瓶颈与内存问题,构建稳定高效的图像处理流程。

weixin_29192211的博客 108

前端如何使用proxyTable和nginx解决跨域问题

最近经常遇到跨域的问题,有时候问题虽然解决了,但是还是会有些模棱两可概念不清,于是在网上看了一些教程结合实际使用,做个笔记。 1.跨域原因 浏览器的限制 跨域(协议/域名/端口的不同) XMLHttpRequest请求 2.解决方案 1) 浏览器禁止检查(适用于本地写demo调试) 2) 后端代码设置请求参数,允许跨域 3) 前端不发送XMLHttpRequest请求(如使用JSON...

江湖行骗老中医 457

Cadence IC5141保姆级教程:Bandgap电路四大仿真(稳定性/噪声/启动/PSRR)完整流程与调参心得

本文提供Cadence IC5141中Bandgap电路的四大仿真(稳定性仿真、噪声仿真、启动仿真、PSRR仿真)的完整流程与调参心得。从原理图检查到ADE L配置,详细解析各仿真步骤的关键参数设置与优化策略,帮助工程师高效完成电路设计与性能调优。

weixin_30399821的博客 1650

梳理ajax跨域常用4种解决方案(简单易懂)

阅读本文大概需要 8 分钟。前言自动接触前端,跨域这个词就一直萦绕在耳畔。因为一般接手的项目都已经做好了这方面的处理,而且之前一直感觉对这方面模棱两可,所以今天就抽个时间梳理一下。为什么...

前端队长Daotin 195

基于fme和python-docx第三方库批量更新不动产调查表

最近应朋友需要批量更新在不动产成果中提交的各种word报表中的指定数据,根据初步的了解,我做了一个基于fme软件和python-docx第三方库进行一个批量的更新方案。

weixin_43229258的博客 1240

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

详细梳理ajax跨域4种解决方案

前言 自动接触前端,跨域这个词就一直萦绕在耳畔。因为一般接手的项目都已经做好了这方面的处理,而且之前一直感觉对这方面模棱两可,所以今天就抽个时间梳理一下。 为什么需要跨域 跨域这个概念来自一个叫 “同源策略” 的东西。同源策略是浏览器(注意是浏览器,跟通信协议无关)上为了安全考虑实施的非常重要的安全机制。 Ajax 默认只能获取到同源的数据,对于非同源的数据,Ajax是获取不到的。 什么...

前端队长Daotin 304

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

CORS跨域资源共享漏洞的复现、分析、利用及修复过程

CORS跨域资源共享漏洞的复现、分析、利用及修复过程

qq_50854662的博客 7331

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

第40篇:CORS跨域资源共享漏洞的复现、分析、利用及修复过程

Part1 前言CORS跨域资源共享漏洞与JSONP劫持漏洞类似,都是程序员在解决跨域问题中进行了错误的配置。攻击者可以利用Web应用对用户请求数据包的Origin头校验不严格,诱骗受害者访问攻击者制作好的恶意网站,从而跨域获取受害者的敏感数据,包括转账记录、交易记录、个人身份证号信息、订单信息等等。近几年在很多的渗透测试报告中,CORS跨域资源共享漏洞越来越多了。有的朋友实在挖不出漏洞,偶尔...

ABC_123的技术博客 5751

http请求走私(HTTP Request Smuggling)

目录 东窗事发 事故实例 漏洞局限性 技术攻坚 检测请求走私 形成检测工具 漏洞利用 请求存储 攻击 缓解措施 东窗事发 HTTP请求理论上是独立的实体,但利用http请求走私技术可以突破理论限制,远程攻击者在未经身份验证的情况下,轻松攻击目标网络基础设施。 事故实例 事故名称:Tomcat请求漏洞(Request Smuggling) CVE编码:CVE-2...

不忘初心,护天下安全! 2万+

SpringMVC之Ambiguous mapping(模棱两可的映射)

1、web.xml和核心配置文件的编辑见上篇http://blog.youkuaiyun.com/u010101142/article/details/55005330; 2、还是HelloController类: package com.slz.hello.controller; import org.springframework.stereotype.Controller; import or

u010101142的专栏 1万+

burpsuite靶场系列之高级漏洞篇 - HTTP请求走私专题

robots   本系列介绍 PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信息安全初学者提供了一个在线的网络安全学院(也称练兵场),在讲解相关漏洞的同时还配套了相关的在线靶场供初学者练习,本系列旨在以梨子这个初学者视角出发对学习该学院内容及靶场练习进行全程记录并为其他初学者提供学习参考,希望能对初学者们有所帮助。   梨子有话说 梨子也算是Web安全初学者,所以本系列文章中难免出现各种各样的低级错误,还请各位见谅,梨子创..

weixin_50464560的博客 1818
上一篇: 如何利用http请求的缓存
下一篇: 从URL到页面,如何优化性能?
luke_up
博客等级 码龄12年 19粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值