前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还能设置多个 Access-Control-Allow-Origin ?

还能设置多个 Access-Control-Allow-Origin ?

作者头像
前端黑板报
发布2024-06-03 11:11:32
4210
发布2024-06-03 11:11:32
举报
文章被收录于专栏:前端黑板报前端黑板报

Access-Control-Allow-Origin 是 HTTP 头部的一部分,用于实现跨域资源共享(Cross-Origin Resource Sharing,简称 CORS)。当一个网页尝试从与自身来源不同(即跨域)的服务器上获取资源时,浏览器会实施同源策略,阻止这种请求,除非服务器明确许可这种跨域访问。Access-Control-Allow-Origin 头就是服务器用来告知浏览器哪些网站可以访问其资源的一种方式。

使用方法

设置单一源

如果你希望只允许特定的源访问资源,可以在服务器端响应中设置 Access-Control-Allow-Origin 头,指定允许的源域名:

代码语言:javascript
复制
Access-Control-Allow-Origin: https://example.com

这表示只有来自 https://example.com 的网页可以成功请求此服务器上的资源。

允许所有源

如果你想允许任何源访问资源(注意这样做可能会带来安全风险),可以设置 Access-Control-Allow-Origin 为通配符 *

代码语言:javascript
复制
Access-Control-Allow-Origin: *
动态设置

在某些情况下,你可能需要根据请求的来源动态设置这个头部。以下是一个简单的示例,展示了如何在 Node.js 的 Express 应用中动态设置 Access-Control-Allow-Origin

代码语言:javascript
复制
const express = require('express');
const app = express();

app.use((req, res, next) => {
  // 允许特定的源或者 *
  const allowedOrigins = ['https://example.com', 'https://another-example.com'];
  const origin = req.headers.origin;
  if (allowedOrigins.includes(origin)) {
    res.setHeader('Access-Control-Allow-Origin', origin);
  } else {
    res.setHeader('Access-Control-Allow-Origin', '*'); // 或者拒绝请求
  }
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  next();
});

// 后续的路由处理...

案例

假设你有一个 API 服务器托管在 https://api.example.com,并且你想让来自 https://myapp.com 的网页能够调用这个 API。

https://api.example.com 的服务器端,你需要设置响应头来允许来自 https://myapp.com 的跨域请求:

代码语言:javascript
复制
# 假设是 Python Flask 应用
from flask import Flask, make_response

app = Flask(__name__)

@app.route('/api/data')
def get_data():
    response = make_response({"data": "Some data here"})
    response.headers['Access-Control-Allow-Origin'] = 'https://myapp.com'
    return response

这样配置后,https://myapp.com 上的网页就可以成功请求 https://api.example.com/api/data 的资源了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端黑板报 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用方法
    • 设置单一源
      • 允许所有源
        • 动态设置
        • 案例
        相关产品与服务
        云托付物理服务器
        云托付物理服务器(Cloud Hosting Cluster,CHC)支持您将自有服务器托付至腾讯云,无硬件架构限制。 将自有服务器托付至腾讯云后,只需几步操作它即能获得完备的 VPC 网络能力,并可无缝集成云产品。您可以像使用云上裸金属产品一样使用托付服务器。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档