当前位置:网站首页>跨域: 汇总
跨域: 汇总
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请求
边栏推荐
- 面试官培训课件(非常实用的企业内训课件)
- The company has a new product, do you want to hire an agent?
- 多元宇宙:重塑新商业格局
- AI全流程开发难题破解之钥
- Based article 】 【 learn with Rust | Rust function and process control, rounding
- Learning with Recoverable Forgetting readings
- 微信云托管入门与实践
- Js array commonly used API
- DNS protocol, ICMP protocol, NAT technology
- WordPress 固定链接设置
猜你喜欢
three.js 报错信息 RGBELoader.js:46 RGBELoader Bad File Format: bad initial token
网络层和传输层限制
共建共享数字世界的根:阿里云打造全面的云原生开源生态
【Unity3D】角色控制器(CharacterController)
MarkDown高阶语法手册
【一起学Rust | 基础篇】Rust基础——变量和数据类型
【实用工具】Image Assistant下载指定页面的所有图片
2.1 Bubble sort (mercifully Sorting)
Based article 】 【 learn with Rust | Rust function and process control, rounding
【Unity3D】场景切换、退出全屏、退出游戏
随机推荐
Pangolin库链接库问题
DAY 22 丨 page daily clock in SQL 】 【 recommend 【 difficulty moderate 】
【第三次自考】——总结
精通音视频开发是真的可以为所欲为
PL/SQL 事务
惠及6亿人 投资98亿 沿江高铁武宜段最新进展来了!
MySql启动、连接sqlog、主从复制、双机热备(开机时)
Out-of-the-box problem-solving thinking, putting a "rearview mirror" on the unconscious life
7月3日文: 表面上有危险,实属安全周期,大概率会快速上扬的个股
c语言:来实现一个小程序n子棋(已五子棋为例)
GDB使用详解
公司出了一款新产品,要不要招代理商?
WordPress 固定链接设置
JVM内存模型如何分配的?
WordPress 常规设置
微信发红包测试用例
ASN.1接口描述语言详解
【表达式计算】表达式计算问题的通用解法(练习加强版,含总结)
Based article 】 【 learn with Rust | Rust function and process control, rounding
1.4, stack