首页 > 其他分享 >跨域和解决方式?

跨域和解决方式?

时间:2022-11-01 17:36:02浏览次数:55  
标签:浏览器 跨域 方式 代理服务器 CORS 解决 服务器 请求

跨域定义:

当前页面中的某个接口请求的地址当前页面的地址如果协议、域名、端口其中有一项不同,就说该接口跨域了。

跨域限制的原因:浏览器为了保证网页的安全,出的同源协议策略。

解决方式:

cors(后端设置)

CORS 全称 Cross-Origin Resource Sharing,即跨域资源共享。

CORS 是一种基于 HTTP Header 的机制,该机制通过允许服务器标示除了它自己以外的其它域。服务器端配合浏览器实现 CORS 机制,可以突破浏览器对跨域资源访问的限制,实现跨域资源请求。

过程:

  1. 如果是简单请求,浏览器会直接发出正常请求;
  2. 如果是复杂请求,浏览器会进行预检,根据服务器的响应头是否包含关键字段决定是否接受响应;
  3. 服务器会根据已有的域配置决定是否在响应头里面加入关键字段。
    服务器

jsonp(前后端配合)

jsonp的核心则是动态添加script标签来调用服务器提供的js脚本。
src不受同源策略的限制

过程:
前端将回调函数作为参数拼接在url中。后端收到请求,调用该回调函数,并将数据作为参数返回去。

注意:

  1. jsonp只支持get请求而不支持post请求

node中间件、nginx反向代理

跨域限制的时候浏览器不能跨域访问服务器,node中间件和nginx反向代理,都是让请求发给代理服务器,静态页面面和代理服务器是同源的,然后代理服务器再向后端服务器发请求,服务器和服务器之间不存在同源限制。

参考

牛客
Jsonp原理
CORS 跨域原理

标签:浏览器,跨域,方式,代理服务器,CORS,解决,服务器,请求
From: https://www.cnblogs.com/badpear/p/16848171.html

相关文章

  • 解决vue-router@3重复添加路由导致的控制台警告
    vue项目的权限限制功能,有一种实现方案是这样的进入项目只设置没有权限要求的路由向后台提供当前用户的权限后台根据用户权限,返回该用户可以用的路由信息将路由......
  • 上传大文件解决方案组件
    ​ 最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......
  • 安装Dlib出错解决方案
    dlibsubprocess.CalledProcessError:Command'[‘cmake’,‘–build’,‘.’,‘–config’解决方案:pythonsetup.pyinstall--noDLIB_GIF_SUPPORT......
  • iOS上拉边界下拉白色空白问题解决概述
    表现手指按住屏幕下拉,屏幕顶部会多出一块白色区域。手指按住屏幕上拉,底部多出一块白色区域。产生原因在iOS中,手指按住屏幕上下拖动,会触发 touchmove 事件。这个事......
  • mac中显示任何来源 -- 提示文件已损坏的解决方法
    cornerstone显示已损坏怎么办先执行下面命令,打开任何来源$sudospctl--master-disable接着执行这段代码#quarantine再应用程序中将有问题的软件拖入终端,得......
  • 软件定制开发解决方案
    软件定制开发是根据客户需求去开发软件功能。在开发过程中需要遵循软件工作规范。并能够在软件正常运行后提供常规维护和功能扩展开发。开源字节正是基于这种认识,多年来为各......
  • 上传大文件解决方案控件
    ​ 总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比......
  • linux sudo 命令执行慢解决办法
    linuxsudo命令执行慢解决办法环境:虚拟机ubuntu20.0查看主机名:执行命令hostname切到root账户:su或sudo-i在/etc/hosts文件中加入一条主机名与IP地址之间的......
  • DJango + Vue 跨域问题解决
    什么是跨域同源:协议+域名+端口号,三者完全相同以上三个元素只要有一个不相同就是跨域产生跨域异常的报错信息如下:accesstoxmlhttprequestat'http://ip:port1/a......
  • 上传大文件解决方案插件
    ​ HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="up6.index" %><!DOCTYPE html PUBLIC "-//W3C//DTDXH......