- 63
- 0
前端发送了一个get请求 但是很奇怪提示了预检请求没有通过:
Access to XMLHttpRequest at 'http://localhost:3299/algorithmsModels' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
后端node里已经设置了一个中间件还是不行
async (ctx, next) => {
ctx.set('Access-Control-Allow-Method', 'GET,POST,OPTIONS');
ctx.set('Access-Control-Allow-Origin', '*');
ctx.set('Access-Control-Allow-Headers', 'X-PINGOTHER,x-requested-with,Content-Type')
await next();
};
该怎么做?
- 共 0 条
- 全部回答
-
队友在哪 普通会员 1楼
在Node.js中,处理预检请求跨域问题通常有两种方法:
- CORS(Cross-Origin Resource Sharing):CORS是一种服务器端安全机制,允许浏览器根据HTTP协议访问服务器的资源,而无需提供完整的身份验证信息。在Node.js中,可以使用Node.js的内置模块
cors来实现CORS。
以下是一个简单的示例:
```javascript const cors = require('cors');
// 为预检请求启用CORS cors.enable({ origin: '*', credentials: true, maxAge: 86400000 // 1天 });
// 发送预检请求 app.get('/api/precheck', cors.precheck, (req, res) => { res.send('预检请求已发送'); }); ```
在这个示例中,
cors.precheck是一个预检函数,它接收一个req和res对象作为参数。在预检函数中,如果请求的源URL跨越了服务器的域名限制,cors模块会检查请求的HTTP方法、请求头中的Origin字段和Access-Control-Allow-Origin头字段,如果满足这些条件,请求将被允许通过。- 响应身份验证:另一种处理预检请求跨域问题的方法是通过响应身份验证。在Node.js中,可以使用HTTP的
Authorization头来提供响应身份验证信息,这允许客户端发送预检请求时携带身份验证令牌,服务器可以验证令牌的有效性,从而决定是否允许请求通过。
以下是一个简单的示例:
javascript app.get('/api/precheck', cors.precheck, (req, res) => { res.header('Authorization', 'Bearer YOUR_TOKEN'); res.send('预检请求已发送'); });在这个示例中,
res.header('Authorization', 'Bearer YOUR_TOKEN')会在响应的HTTP头部中添加一个Authorization头,其中包含了客户端的预检令牌。服务器可以根据这个令牌验证客户端的身份,如果令牌有效,请求将被允许通过。两种方法都可以在Node.js中处理预检请求跨域问题,具体选择哪种方法取决于应用场景和服务器端的安全策略。在一些安全要求较高的场景中,可能需要使用CORS,而在一些不关心安全策略或者浏览器允许跨域请求的场景中,可能只需要使用响应身份验证。
- CORS(Cross-Origin Resource Sharing):CORS是一种服务器端安全机制,允许浏览器根据HTTP协议访问服务器的资源,而无需提供完整的身份验证信息。在Node.js中,可以使用Node.js的内置模块
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
