CORS(跨源资源共享) 是 Web 浏览器实现的一项安全功能,用于控制如何从与资源来源不同的域(来源)请求资源。它在现代 Web 开发中至关重要,尤其是在使用 API 时,因为它可以防止未经授权的资源访问并确保数据的安全交换。
起源由以下组合定义:
示例:
同源策略是一种安全措施,用于限制网页上的资源与其他来源的资源交互的方式。
虽然 SOP 确保了安全性,但它限制了合法的跨域请求,这就是 CORS 的用武之地。
CORS 是一种机制,允许服务器通过在响应中包含特定的 HTTP 标头来指定谁可以访问其资源。这些标头指示浏览器是否应允许客户端访问所请求的资源。
当浏览器发出跨域请求时,它会检查服务器的响应标头以确定是否允许该请求。
关键步骤:
飞行前请求(可选):
对于某些类型的请求,浏览器会发送初始 OPTIONS 请求来检查实际请求是否被允许。
服务器响应:
服务器在响应中包含适当的 CORS 标头。
浏览器决策:
如果标头符合浏览器的期望,则资源被共享;否则,浏览器会阻止该请求。
Access-Control-Allow-Origin: 指定允许哪些源访问资源。
示例:Access-Control-Allow-Origin:https://example.com
Access-Control-Allow-Methods: 指定允许的 HTTP 方法。
示例:访问控制允许方法:GET、POST、PUT
Access-Control-Allow-Headers: 指定可以在请求中发送的自定义标头。
示例:访问控制允许标头:内容类型、授权
Access-Control-Allow-Credentials: 指示是否可以发送凭据(cookie、HTTP 身份验证)。
示例:访问控制允许凭据:true
简单请求:
预检请求:
凭证请求:
fetch("https://api.otherdomain.com/data", { method: "GET", headers: { "Content-Type": "application/json", }, credentials: "include", // For sending cookies or credentials }) .then(response => response.json()) .then(data => console.log("Data:", data)) .catch(error => console.error("Error:", error));
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Allow-Credentials: true
const express = require("express"); const cors = require("cors"); const app = express(); // Use the CORS middleware app.use(cors({ origin: "https://example.com", // Allow only this origin methods: ["GET", "POST"], // Allow these HTTP methods credentials: true, // Allow credentials })); app.get("/data", (req, res) => { res.json({ message: "CORS request successful" }); }); app.listen(3000, () => console.log("Server running on port 3000"));
错误:请求的资源上不存在“Access-Control-Allow-Origin”标头。
错误:凭据请求要求“Access-Control-Allow-Credentials”为 true。
预检请求失败:
CORS 是 Web 应用程序中安全且功能性的跨域资源共享的重要功能。通过了解并正确配置服务器上的 CORS 标头,您可以确保域之间的通信顺畅且安全,同时遵守 Web 安全标准。
嗨,我是 Abhay Singh Kathayat!
我是一名全栈开发人员,拥有前端和后端技术方面的专业知识。我使用各种编程语言和框架来构建高效、可扩展且用户友好的应用程序。
请随时通过我的商务电子邮件与我联系:kaashshorts28@gmail.com。
以上是了解 CORS:JavaScript 中的安全跨源资源共享的详细内容。更多信息请关注PHP中文网其他相关文章!