首页 > 其他分享 >跨域相关

跨域相关

时间:2023-06-12 19:12:32浏览次数:24  
标签:浏览器 跨域 url ajax 相关 页面 请求

1、概念

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

2、产生原因

浏览器的同源策略:页面请求的接口地址,必须与页面的url地址处于同域上 (即域名、端口、协议相同)

3、浏览器跨域报错

(1)发起 ajax请求 的那个页面的地址 和 ajax接口地址 不在同一个域中

(2)跨域错误:不同源的ajax请求

(3)浏览器向web服务器发起http请求时 ,如果同时满足以下三个条件时,就会出现跨域问题,从而导致ajax请求失败

  1)请求响应双方url不同源

  2)请求类型是xhr请求

  3)浏览器觉得不安全

4、解决思路

(1)请求响应双方不同源

  • 补充script标签并设置它的src值为接口地址
  • 改造接口返回函数调用表达式,并传入数据
  • 在前端准备相应的函数

(2)改发JSONP

  前端$ajax处加上【dataType:'jsonp'】属性

  后端框架中,修改res.json为res.jsonp

(3)代理服务器

(4)跨域资源共享(CORS)【npm i cors】

  基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通

  无需客户端作出任何变化

  服务端响应的时候添加一个 Access-Control-Allow-Origin 的响应头【res.setHeader('Access-Control-Allow-Origin',' * ')】

5、jsonp和cors的区别

JSONP:

  • 不是ajax
  • 只能支持get方式
  • 兼容性好

CORS:

  • 前端不需要做额外的修改,就当跨域问题不存在。
  • 是ajax
  • 支持各种方式的请求(post,get....)
  • 浏览器的支持不好(标准浏览器都支持)

6、嵌入iframe然后跨域通信

父窗口向子窗口我们通过 iframe.contentWindow.postMessage 发 送消息

子窗口向父窗口我们通过 window.parent.postMessage 发送消息

后接受的话都是监听 window的message事件

标签:浏览器,跨域,url,ajax,相关,页面,请求
From: https://www.cnblogs.com/le-fang/p/17475878.html

相关文章

  • vue解决跨域
    vue-cli2main.jsimportaxiosfrom'axios'Vue.prototype.$axios=axiosaxios.defaults.baseURL='/api'Vue.config.productionTip=false.vuevarThis=thisvarurl='/group1/M00/00/21/MejEvGOX_zOAL2kiAAAAUhB5Iqg138.tx......
  • Axios 代理跨域后后端无法接收Session问题
    将一个MVC项目重构为一个前后端分离项目,前端使用了react+axios+vite...。在前后端分离项目中,通常都会使用代理来解决跨域问题,vite需要在vite.config.js文件中配置代理:exportdefaultdefineConfig({server:{//代理配置proxy:{//请求前缀......
  • 1加6T初步适配OpenHarmony-4.0-Beta1体验包更新,及相关仓开源
    1加6T初步适配OpenHarmony-4.0-Beta1体验包更新,及相关仓开源OpenHarmony官方于上周发布了OpenHarmony-4.0-Beta1版本,版本详细介绍:https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-beta1.md。相对于OpenHarmony-3.2的适配,4.0-Beta1还是有......
  • Segment-Anything的一些相关论文总结
    1、SegmentAnythingModel(SAM)EnhancedPseudoLabelsforWeaklySupervisedSemanticSegmentation https://avoid.overfit.cn/post/92f50aa2951d4dd89cfc4fe71e0531ef......
  • nginx-rmtp-****,nginx-flv-****的编译相关问题及解决方案
    1.mingW进入命令行  2.编译nginx-rtmp-module-master遇到的问题解决方案参考......
  • 黑马redis相关问题
    Redis相关面试题面试官:什么是缓存穿透?怎么解决?候选人:嗯~~,我想一下缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都......
  • 黑马框架篇相关问题
    框架篇面试题-参考回答面试官:Spring框架中的单例bean是线程安全的吗?候选人:嗯!不是线程安全的,是这样的当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求对应的业务逻辑(成员方法),如果该处理逻辑中有对该单列状态的修改(体现为该单例的成员......
  • Windows驱动开发学习记录-ObjectType Hook之ObjectType结构相关分析
    1、目的  在一般情况下,对于系统的常规操作如创建进程、创建互斥体、创建文件等可以进行SSDTHook进行拦截,但在x64位系统下,有PG的保护,常规的SSDTHook会导致蓝屏。但基于ObjectType的一些Hook也可以做到相应的功能且不会导致系统BSOD。 2、相关结构分析2.1XP上的相关结构......
  • Django站点静态文件缓存相关问题
    《高性能网站建设指南》中有一条建议,为网站的页面、文件“添加Expires头”。这么做的好处就不多说了,实现方式也比较简单,不过,真的实施这条建议时,还是有许多问题需要考虑。通常情况下,我们需要将图片、js、css等不会经常更新的文件缓存起来,一般来说,配置服务器,为它们设置一个较远的......
  • 人工智能和ChatGPT深度学习相关资源列表
    作者:DerrickHarris,MattBornstein,GuidoAppenzellerResearchinartificialintelligenceisincreasingatanexponentialrate.It’sdifficultforAIexpertstokeepupwitheverythingnewbeingpublished,andevenharderforbeginnerstoknowwheretostart.......