当前位置: 首页 > news >正文

React跨域解决方案

一、跨域日志报错

我们由于项目需要经常会需要对不同域名、不同子域的网站接口发起请求,有时甚至是对于同一域名的不同端口发起请求,此时我们经常看到以下报错: 

Access to XMLHttpRequest at 'xxx' from origin 'xxx' has been blocked by CORS

policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

是的,错误的原因就是你跨域了。

二、为什么会有跨域问题?

看到网上举的一个形象例子,先设想下,如果允许跨域,那么黑衣人是不是可以在自己的网页上把请求转发给其他网站?例如,黑衣人在自己的页面设计了一个跨域请求到某钱堆的网址,当用户访问黑衣人网址时,浏览器按照黑衣人设计去访问了钱堆(还携带了用户在钱堆那儿的cookie)......之后,之后警察叔叔们又要加班了。还有诸如此类许多安全隐患。所以后来的浏览器都开始实行同源策略。 

同源策略,其实就是只允许相同协议+域名+端口号(如存在)的HTTP请求互相访问。这么理解其实就够了。关于跨域资源共享标准( cross-origin sharing standard )CORS的详细内容

三、怎么解决跨域问题?

这里我给出两种React的跨域解决方案(React16.9),第一种比较实用,第二种需要服务端协调。

很多以前的资料写的直接在package.json中配置proxy的,这个方法已经失效很久了。官方给出的新版本解决方案需要借助http-proxy-middleware这个包。

1. 方法一: 使用 http-proxy-middleware

1> . 添加组件

npm install  --save http-proxy-middleware

2>. src目录下创建setupProxy.js,配置如下:

const { createProxyMiddleware } = require('http-proxy-middleware'); 

module.exports = function (app) { 

       // proxy第一个参数为要代理的路由   第二参数中target为代理后的请求网址,                   

       // changeOrigin是否改变请求头,其他参数请看官网  baidu

       app.use(createProxyMiddleware('/cityjson', { 

               target: 'http://pv.sohu.com',                                                                                                            

               changeOrigin: true,                                                                                                                 

        } )); 

}

3>. 测试一下:

// 页面代码:

import React,{ useEffect,useState } from 'react';

import axios from 'axios'; 

function App() { 

       const [ip,setIp] = useState(); 

       axios.get('/cityjson').then((res) => {

        console.log(res.data); 

         setIp(res.data.toString());

    }).catch(function (error) { 

          console.log(error); 

    }); 

   return (<h1>获取的IP信息:{ip}</h1>) ;

export default App;

成功获取! web页面显示:

获取的IP信息:var returnCitySN = {"cip": "117.136.83.208", "cid": "CN", "cname": "CHINA"};

2.借助服务端配置

相关文章:

React跨域解决方案

一、跨域日志报错 我们由于项目需要经常会需要对不同域名、不同子域的网站接口发起请求&#xff0c;有时甚至是对于同一域名的不同端口发起请求&#xff0c;此时我们经常看到以下报错&#xff1a; Access to XMLHttpRequest at xxx from origin xxx has been blocked by COR…...

内存五区的概念,内存池技术的诞生。

首先提出一道经典的面试题来引出今天的主角&#xff1a; 进程的虚拟空间分布是什么样的&#xff0c;全局变量放在哪里&#xff1f; 在数据初始化之后&#xff0c;全局变量放在.data段 在数据未初始化时&#xff0c;全局变量放在.bss段 内存五区 进程虚拟内存主要分为五个部分…...

力扣:字符串中的第一个唯一字符(C++实现)

题目部分&#xff1a; 解题思路&#xff1a; 方案一&#xff1a; 首先认真审题的小伙伴们一定会发现就是题目给了提示只包含小写字母&#xff0c;也就是说我们的排查范围是小写的26个字母。为了怕有的友友们一时短路想不起来&#xff0c;我就其按照顺序列出来吧。 即&#x…...

攻防世界 favorite_number mfw、[BJDCTF2020]ZJCTF,不过如此

favorite_number 进入环境得到源码 <?php //php5.5.9 $stuff $_POST["stuff"]; $array [admin, user]; if($stuff $array && $stuff[0] ! admin) {$num $_POST["num"];if (preg_match("/^\d$/im",$num)){if (!preg_match("…...

SummingMergeTree

假设有这样⼀种查询需求&#xff1a;终端⽤户只需要查询数据的汇总结果&#xff0c;不关⼼明细数据&#xff0c;并且数据的汇总条件是预先明确的&#xff08;GROUP BY 条件明确&#xff0c;且不会随意改变&#xff09;。 对于这样的查询场景&#xff0c;在ClickHouse中如何解决…...

JUC并发编程基础篇第一章之进程/并发/异步的概念[理解基本概念]

1. 进程和线程的概念 进程: 系统正在运行的一个应用程序;程序一旦运行就是一个进程;进程是资源分配的最小单位 线程: 是进程的实际运行单位;一个人进程可以并发控制多个线程,每条线程并行执行不同的任务 区别: 进程基本上相互独立的;而线程存在于进程内&#xff0c;是进程…...

c语言—指针进阶

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

总结二分法

杨辉三角形&#xff08;快速查找唯一值,mid型) //二分法解//流程&#xff1a;最大列->起点行->2k--n之间究竟哪一行&#xff08;二分排列组合&#xff09;->找到行数就等差数列对应位置#include<stdio.h> #include<stdlib.h>//注意排列组合的规律是建立在…...

二叉搜索树和AVL树

目录 一、二叉搜索树 1.什么是二叉搜索树 2.二叉搜索树的实现 &#xff08;1&#xff09;构建类 &#xff08;2&#xff09;查找函数 &#xff08;3&#xff09;插入函数 &#xff08;4&#xff09;删除函数 &#xff08;5&#xff09;补齐默认成员函数 &#xff08;6…...

计算机体系结构量化研究方法【2】高速缓存Cache

目录1.计算机存储层次结构2.缓存相关概念3.缓存组织方式4.Cache回写机制5.Cache性能量化1.计算机存储层次结构 计算机存储层次结构可以看作是一个金字塔&#xff0c;越靠上层&#xff0c;容量越小&#xff0c;速度越快 L0&#xff1a;寄存器----CPU的寄存器保存着Cache取出的…...

初识设计模式 - 迭代器模式

简介 迭代器设计模式&#xff08;Iterator Design Pattern&#xff09;&#xff0c;也叫作游标设计模式&#xff08;Cursor Design Pattern&#xff09;。 迭代器模式将集合对象的遍历操作从集合类中拆分出来&#xff0c;放到迭代器类中&#xff0c;让两者的职责更加单一。 …...

三路快排(基于三指针单趟排序的快速排序)+快排时间复杂度再分析

目录 一.前言 二. 三路快排 &#x1f60d;算法思想: &#x1f60d;算法实现步骤: &#x1f60d;三指针单趟排序的实现:​ &#x1f60d;非递归快排完全体: &#x1f914;与C标准库里的快排进行对比测试: 三.快排时间复杂度再分析 一.前言 http://t.csdn.cn/mz8dghttp://…...

Eyeshot Ultimate 2023 Crack

Eyeshot Ultimate 2023 Crack 已经引入了文档类。 工作区。文档现在包含绘制场景内容所需的所有数据。 2022版GEntities已被删除。 最后&#xff0c;一个真正的跨平台中立核心产品是可用的。 新功能 曲线、平面、曲面和体积网格。 屏幕空间环境光遮挡。 托管ReadDWG和ReadDXF类…...

JAVA-8-[SpringBoot]入门程序案例和原理分析

Spring Boot框架入门教程&#xff08;快速学习版&#xff09; Spring Boot教程BooTWiki.COM 1 Spring Boot Spring Boot是Pivotal(关键性的)团队在Spring的基础上提供的一套全新的开源框架&#xff0c;其目的是为了简化Spring应用的搭建和开发过程。Spring Boot去除了大量的X…...

前端工程化

一、AST &#xff08;抽象语法树&#xff0c;Abstract Syntax Tree&#xff09; 手把手带你走进Babel的编译世界 - 掘金 (juejin.cn) 1、概念 我们所写的代码转换为机器能识别的一种树形结构&#xff0c;本身是由一堆节点&#xff08;Node&#xff09;组成&#xff0c;每个节…...

【redis】单线程 VS 多线程(入门)

【redis】单线程 VS 多线程&#xff08;入门&#xff09; 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#…...

2023蓝桥杯Java研究生组赛题

蓝桥杯Java研究生组、JavaA组看过来&#xff0c;这两个组别题目基本一样 第一次参加了Java研究生组&#xff0c;Java组应该没有C/C那么卷吧&#xff0c;主要是觉得Java组可以避开很多ACM大佬&#xff0c;前面几题感觉难度还行没有特别难&#xff0c;后面几个大题依旧是没法做&a…...

多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测

多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测 目录多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测&#xff0c;CNN-BiLSTM-Atte…...

微积分——Rolle定理的理解(罗尔定理)

极值定理(Extreme Value Theorem)指出&#xff0c;闭区间[a,b]上连续的函数既有最大值&#xff0c;也有最小值。然而&#xff0c;其最大最小值都可能发生在端点。罗尔定理(Rolle’s Theorem)以法国数学家Michel Rolle(1652-1719)的名字命名&#xff0c;它给出了极值存在于闭区间…...

linux内核之select/poll/epoll

一些主流应用IO多路复用技术&#xff0c;突破高并发问题&#xff0c;如nginx、redis、netty&#xff0c;分布式服务框架dubbo&#xff0c;大数据组件hadoop、spark、flink、hbase纷纷使用netty作为网络通信组件。 一、背景&#xff1a;C10K问题 The C10K problem 最早被Dan …...

RT-Thread实战:AB32VG1驱动I2C OLED屏实现上电自启动

1. 项目概述与核心思路最近在折腾中科蓝讯的AB32VG1开发板&#xff0c;想用它来驱动一块I2C接口的OLED屏幕。在网上搜了一圈&#xff0c;发现大部分教程都停留在“官方例程”的层面——也就是在RT-Thread的msh&#xff08;类似shell的命令行&#xff09;里输入指令来测试驱动。…...

SDXL动画生成实战:AnimateDiff与Hotshot-XL效果对比与配置详解

1. SDXL动画生成工具概览 最近在玩SDXL动画生成的朋友应该都听说过AnimateDiff和Hotshot-XL这两款神器。作为目前最主流的两个文生视频开源工具&#xff0c;它们都能基于SDXL模型将静态图片转换成动态视频。不过在实际使用中&#xff0c;我发现两者的效果差异还挺明显的。 先说…...

Postman导入导出避坑指南:为什么你的环境变量导入后不生效?

Postman环境变量导入失效深度解析与解决方案 当你在团队协作或项目迁移时&#xff0c;精心配置的Postman环境变量导入后却神秘消失——这种挫败感每个开发者都经历过。本文将揭示Postman变量系统的底层机制&#xff0c;通过三个典型故障场景还原真实问题根源&#xff0c;并提供…...

SMARC嵌入式模块规范解析:从标准化接口到硬件设计实战

1. 项目概述&#xff1a;从“黑盒子”到标准化接口的进化在嵌入式系统开发领域&#xff0c;尤其是工业控制、边缘计算和物联网设备中&#xff0c;我们经常会遇到一个核心矛盾&#xff1a;如何平衡设计的灵活性与开发效率&#xff1f;早些年&#xff0c;很多项目都是从零开始&am…...

Chat-with-NeRF:三维场景重建与对话式AI的融合实践

1. 项目概述&#xff1a;当NeRF遇见对话式AI最近在三维视觉和AIGC的交叉领域&#xff0c;一个名为“chat-with-nerf”的项目引起了我的注意。简单来说&#xff0c;它实现了一个听起来很科幻的功能&#xff1a;你上传一张或多张照片&#xff0c;系统会基于这些照片重建出一个三维…...

古典戏曲研究新范式,NotebookLM+《牡丹亭》原始刻本实测:自动生成曲牌-情感-舞台调度三维映射表

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM戏剧研究辅助的范式革命 传统戏剧研究长期依赖人工文本细读、跨剧目比对与历史语境重建&#xff0c;耗时冗长且易受主观经验局限。NotebookLM 的引入&#xff0c;标志着从“线性阅读—笔记摘…...

SoC芯片设计全流程解析:从架构定义到流片制造

1. 项目概述&#xff1a;从“黑盒子”到“城市蓝图”当我们谈论智能手机、智能手表、路由器乃至汽车里的智能座舱时&#xff0c;我们谈论的核心&#xff0c;往往是一个被称为“片上系统”或SoC的硅片。对于很多刚入行的朋友&#xff0c;甚至是一些有经验的软件工程师来说&#…...

别再为MATLAB+Amesim联合仿真装环境发愁了!保姆级VS2019+2022a+2021.1安装避坑指南

MATLABAmesim联合仿真环境搭建全攻略&#xff1a;从零避坑到一次成功 当第一次接触MATLAB与Amesim联合仿真时&#xff0c;许多工程师和研究生都会在环境搭建阶段遭遇各种"玄学问题"——明明按照教程操作&#xff0c;却总是卡在某个环节无法继续。本文将分享一套经过…...

LiveSplit速通计时器:5个核心功能提升你的游戏计时效率

LiveSplit速通计时器&#xff1a;5个核心功能提升你的游戏计时效率 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit LiveSplit是一款专为游戏速通玩家设计的专业计时器软件&a…...

团队协作福音:如何用EasyYapi插件统一SpringBoot项目的接口文档风格?

团队协作福音&#xff1a;如何用EasyYapi插件统一SpringBoot项目的接口文档风格&#xff1f; 在微服务架构盛行的今天&#xff0c;一个SpringBoot项目往往由多个团队协作开发。当接口数量突破三位数时&#xff0c;文档风格不统一、字段说明缺失等问题会让协作效率直线下降。上周…...