本文将为您介绍如何配置 CORS(跨源资源共享),以允许来自不同域的客户端访问您的服务器。

什么是 CORS?

CORS 是一种机制,允许 Web 应用程序从不同的域、协议或端口请求资源。这通常用于实现前后端分离的开发模式。

CORS 配置步骤

  1. 设置 HTTP 响应头:在响应中添加以下头部信息:

    • Access-Control-Allow-Origin: 允许访问的域名,可以是具体域名或 *(表示所有域名)。
    • Access-Control-Allow-Methods: 允许的 HTTP 方法,例如 GET, POST, PUT, DELETE
    • Access-Control-Allow-Headers: 允许的头部信息,例如 Content-Type, Authorization
  2. 预检请求:当浏览器发起跨源请求时,会先发送一个预检请求(OPTIONS 请求),询问服务器是否允许该请求。服务器需要响应预检请求,并返回相应的头部信息。

  3. 响应选项请求:对于预检请求,服务器需要返回以下头部信息:

    • Access-Control-Allow-Origin: 允许访问的域名。
    • Access-Control-Allow-Methods: 允许的 HTTP 方法。
    • Access-Control-Allow-Headers: 允许的头部信息。
    • Access-Control-Allow-Credentials: 是否允许携带凭据(例如 cookies)。

示例代码

以下是一个简单的 CORS 配置示例:

from flask import Flask, request, make_response

app = Flask(__name__)

@app.route('/api/data', methods=['GET', 'POST'])
def get_data():
    response = make_response({'data': 'Hello, CORS!'})
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'GET, POST'
    response.headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization'
    return response

if __name__ == '__main__':
    app.run()

扩展阅读

更多关于 CORS 的信息,请访问 MDN Web Docs

CORS 图解