NODE 服务端设置CORS解决跨域问题

项目中遇到直接使用设置原生http工具模块的请求头解决:

httpService.createServer((request, response) => {
            //使用cors解决跨域问题
            response.setHeader('Access-Control-Allow-Origin', '*');    //可设置允许跨域地址
            response.setHeader("Access-Control-Allow-Headers", "X-Requested-With,X_Requested_With,Content-Type");    // 允许post请求
            response.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
            response.setHeader("Content-Type", "application/json;charset=utf-8");
           
        }).listen(8080);
跨域(CORS,Cross-Origin Resource Sharing)是一个浏览器安全策略,它限制了同源策略(Same-Origin Policy),即出于隐私和安全考虑,浏览器通常不允许网页从非同源服务器请求资源。当用户在一个网站(源站)点击链接或发送Ajax请求到另一个网站(目标站)时,如果目标站设置的响应头中缺少“Access-Control-Allow-Origin”字段,或者该字段值不是源站域名,浏览器就会阻止这种请求。 解决跨域问题主要有以下几种方法: 1. **服务端处理**:在目标服务器上添加适当的CORS响应头,允许特定的源站点访问资源。例如,可以在HTTP头部设置`Access-Control-Allow-Origin`,指定允许的来源范围。 ```javascript // Node.js示例 res.setHeader('Access-Control-Allow-Origin', 'http://your-source-domain.com'); ``` 2. **JSONP**(JSON with Padding):通过动态创建`<script>`标签,利用`<script>`不受同源策略限制的特点,间接实现跨域数据获取。但是这种方法安全性较低,因为脚本可以执行任意JavaScript。 3. **代理转发**:如果客户端无法直接与目标服务器通信,可以通过中间服务器(如Node.js的Express应用)作为代理,将请求转发到目标服务器并获取响应。 4. **CORS预检请求**(Preflighted Requests):对于某些类型的跨域请求(如POST、PUT等),浏览器会先发送一个OPTIONS请求到服务器,询问是否允许实际请求。服务器需要处理这个预检请求,并在响应中确认权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值