首页 > 其他分享 >2023.04.07 - 前端常用解决跨域问题的方案

2023.04.07 - 前端常用解决跨域问题的方案

时间:2023-04-07 23:59:23浏览次数:48  
标签:WebSocket 请求 CORS 2023.04 跨域 JSONP 服务端 07

  1. JSONP:JSONP(JSON with Padding)是一种前端跨域请求的方式,它利用了 HTML 中的 <script> 标签没有跨域限制的特点,通过动态创建 <script> 标签,构造一个特殊的 URL,让服务端返回一段指定的 JavaScript 代码,然后在本地执行这段代码以达到跨域请求数据的目的。JSONP 具有兼容性好、简单易用的优点,但它不支持 POST 请求等复杂请求方式,而且容易遭受恶意攻击和信息泄露。因此在使用 JSONP 时,一定要选择可信任的接口和服务商,并且进行相应的防范和处理。

  2. CORS(跨域资源共享):CORS 是 HTML5 中提出的一种解决跨域请求的方式,通过设置 HTTP 头部的 Origin 和 Access-Control-Allow-* 等字段,让服务端决定是否接受来自其它域的请求。CORS 可以实现简单请求(请求方法为 GET/POST/HEAD,且没有自定义请求头),也可以实现带有预检请求的复杂请求(请求方法为 PUT/DELETE/OPTIONS,或带有自定义请求头等),具有良好的兼容性和安全性。

  3. 代理转发:代理转发是指将跨域请求发送给同源的服务端,再由服务端向目标服务器发送请求,并将相应的数据返回给前端。通过代理转发,可以有效地绕开浏览器的跨域限制,同时也可以对请求进行相应的处理和过滤。缺点是需要服务端的支持,同时可能造成服务器的压力增加。

  4. WebSocket:WebSocket 是 HTML5 中提出的一种全双工通信协议,可以实现客户端与服务端的实时数据传输。WebSocket 采用了与 HTTP 不同的协议头,可以绕过浏览器的跨域限制,并支持与服务端进行双向数据通信。但是,WebSocket 兼容性较差,需要服务端的支持,并且可能存在安全问题。

  5. JSONP的升级版:JSONP 有可能被篡改,导致安全问题,可以使用基于 WebSocket 的跨域请求来进行替代,例如使用 socket.io 和 JSONP-comet 等技术。这些技术利用 WebSocket 进行双向通信和数据传输,同时也可绕开浏览器的跨域限制,实现了更加安全、实时和高效的跨域请求。

需要注意的是,以上这些方式各有优缺点,具体的选择应该根据不同的应用场景和需求进行综合考虑。如果选择使用 JSONP,为了保证安全性和正确性,应该对响应数据进行合法性校验和异常处理,同时谨慎选择服务提供商,并遵守其规范和要求。

标签:WebSocket,请求,CORS,2023.04,跨域,JSONP,服务端,07
From: https://www.cnblogs.com/yehuda/p/17297706.html

相关文章

  • 每日总结2023-04-07
    今天对前几天的的界面做了优化packagecom.example.math;/**注册界面*/importandroidx.annotation.NonNull;importandroidx.appcompat.app.AppCompatActivity;importandroid.content.Intent;importandroid.os.Build;importandroid.os.Bundle;importandroid.os......
  • C/C++模拟ATM机存取款管理系统[2023-04-07]
    C/C++模拟ATM机存取款管理系统[2023-04-07]2、模拟ATM机存取款管理系统模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款修改密码、退出系统等功能。(一)功能要求及说明:(1)将银行账户的卡号,户名,密码和账户余额从外部文件(银行账户.txt)中读入......
  • Hugging News #0407: Google AI 的 Pix2Struct 来啦、开发者资源页面发布
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」,本期HuggingNews有哪些有趣的消息,快来看看吧!社区活动ControlNet微调冲刺活动为了帮......
  • 4.07每日总结
    MySQLNULL值处理我们已经知道MySQL使用SQLSELECT命令及WHERE子句来读取数据表中的数据,但是当提供的查询条件字段为NULL时,该命令可能就无法正常工作。为了处理这种情况,MySQL提供了三大运算符:ISNULL: 当列的值是NULL,此运算符返回true。不是空:当列的值不为NULL,......
  • 2023.04.07 - 用jQuery发起JSONP请求时jsonpCallback和success的回调区别在哪?
    在使用jQuery发起跨域请求时,可以通过指定dataType为jsonp来实现JSONP跨域请求。此时,jQuery会自动生成一个回调函数,并将其作为参数发送给服务器。服务器需要将返回数据包装在回调函数中,以便于客户端解析。以下是一个简单的jQuery实现JSONP跨域请求的示例:$.ajax({......
  • # システムに関して知識の復習は始まります20230407
    システムに関して知識の復習は始まります20230407今回、Markdowmで要点をメモしておくつもり、まずMarkdownの学んだ方法は以下です。1タイトル:二級タイトル三級タイトル四級タイトル2字体=フォントfont"Hello,World!"Hello,World!"cm+i斜体;"Hello,World!"cm+b太字;......
  • VUE解决跨域的proxyTable
    找到问题:因为java服务运行在localhost:9001端口,vue运行在localhost:8080端口,不同端口存在跨域问题。所以我使用了反向代理处理。在vue.config.js里:proxyTable:{'/api':{target:'localhost:9001',//secure:true,changeOrigin:true,......
  • 解决跨域问题
    首先理解一下跨域:比如:  从http://localhost:8601 到  http://localhost:8602 由于端口不同,是跨域。从http://192.168.101.10:8601 到  http://192.168.101.11:8601 由于主机不同,是跨域。从http://192.168.101.10:8601 到  https://192.168.101.10:8601......
  • vue生产环境跨域不生效
    vue生产环境跨域不生效开发环境跨域项目集成了百度地图的api,在接入ip查询地址等功能时返回跨域报错,所以使用vite配置文件配置服务代理来解决。传送门生成环境失效测试跟我说内网功能失效了,在验证了程序确实build到最新版本之后,使用f12发现了api访问的地址并没有代理到百度地图......
  • 安装wsl的必备操作——开启CPU虚拟化——WslRegisterDistribution failed with error_
    参考:https://www.cnblogs.com/smdtxz/p/16837946.htmlhttps://www.cnblogs.com/wenonly/p/17206040.htmlhttps://blog.csdn.net/qq_41460654/article/details/118026986  ======================================================  因为实验室需要炼丹,而炼丹要用ubun......