当前位置:网站首页>跨域: 汇总
跨域: 汇总
2022-07-29 11:53:00 【小强有个dream】
模拟一个跨域
先 npm i express
再node cors.js
// cors.js
const express = require('express')
const app = express()
app.get('/', function (req, res) {
res.send('hello world')
})
app.listen(3003)
//http.html
<script>
fetch('http://localhost:3003/')
.then(response => console.log(response))
</script>
liverserver启动 访问http.html出现跨域
错误如下:
解决方式一:配置Access-Control-Allow-Origin字段或使用cors插件
// cors.js
const express = require('express')
const app = express()
app.get('/', function (req, res) {
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin", "*");
// //允许的header类型
// res.header("Access-Control-Allow-Headers", "content-type");
// //跨域允许的请求方式
// res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
res.send('Hello World')
})
app.listen(3000)
或
// cors.js
const express = require('express')
const app = express()
const cors = require('cors')
app.use(cors())
app.get('/', function (req, res) {
})
app.listen(3000)
解决方式二: script静态资源不存在跨域,可以使用jsonp
// cors.js
const express = require('express')
const app = express()
app.get('/', function (req, res) {
// 方式三
const callback = req.url.split('=')[1];
res.statusCode = 200;
// 返回JSONP格式数据
res.end(`${
callback}({"name": "JSONP"})`);
})
app.listen(3000)
// http.html
<script>
function printName(data) {
document.write('hello ' + data.name);
}
</script>
<script src="http://127.0.0.1:3000/?callback=printName"></script>
解决方式三: 客户端请求其它
/cors.js
// 方式四(透传)
const express = require('express')
const app = express()
const axios = require('axios');
const {
json } = require('body-parser');
const {
Console } = require('console');
app.get('/touchuan', function (req, res) {
res.header("Access-Control-Allow-Origin", "*");
// 其它服务器的接口
axios.get('http://qcds.vivo.xyz/query/version_infos?version_name=1.9.4.990')
.then( (data) => {
res.send(JSON.stringify(data.data))
})
})
app.listen(3000)
// http.html
<script>
fetch('http://localhost:3000/touchuan')
.then(response => console.log(response))
</script>
与之类似的还有 image请求
边栏推荐
猜你喜欢

365天挑战LeetCode1000题——Day 043 有效的正方形 数学

365 days challenge LeetCode1000 topic - Day 043 square mathematics effectively

MySql启动、连接sqlog、主从复制、双机热备(开机时)

惠及6亿人 投资98亿 沿江高铁武宜段最新进展来了!

Building and sharing the root of the digital world: Alibaba Cloud builds a comprehensive cloud-native open source ecosystem

面试官培训课件(非常实用的企业内训课件)

Out-of-the-box problem-solving thinking, putting a "rearview mirror" on the unconscious life

飞桨框架体验评测交流会,产品的使用体验由你来决定!

Codeforces Round #797 (Div. 3)个人题解

谷歌“消灭” Cookie 计划延至 2024 年
随机推荐
DAY 26 daily SQL clock 】 【 change 丨 restaurant turnover growth difficulty moderate 】 【
【Unity3D】角色控制器(CharacterController)
c语言:来实现一个小程序n子棋(已五子棋为例)
如何对SQuAD1.1数据集进行预处理「详解版」
2022年企业直播行业发展洞察
socket+websocket
GDB使用详解
mysql single-line, multi-line subquery
"100 Interview Knowledge Collections" 1. Interview Skills丨Do you really understand HR's careful thinking?
WordPress 重置密码
【每日SQL打卡】DAY 24丨找到连续区间的开始和结束数字【难度中等】
Proficient in audio and video development can really do whatever you want
mysql单行,多行子查询
【day04】IDEA、方法
MarkDown高阶语法手册
three.js 报错信息 RGBELoader.js:46 RGBELoader Bad File Format: bad initial token
宝塔快速搭建自适应咖啡网站模板与管理系统源码实测
PL/SQL 事务
学习周刊-总第64期-一个v2ex风格的开源论坛程序
2.2 Selection sort
