什么是源
本课属于 Coddy Node.js 学习旅程的“REST API”单元。第 18 课,共 25 课。
浏览器通常允许网页中的 JavaScript 读取来自同源的 API 响应。同源规则可防止网页随意读取其他网站的数据。CORS,即跨源资源共享,可以让服务器通过响应头允许其他源访问。
浏览器网页有一个源,由协议、主机和端口组成。同一源下的不同路径可以共享 API,而无需 CORS 许可。主机、协议或端口发生变化,就会形成不同的源。
new URL('https://board.example.com/tasks').origin;
// 'https://board.example.com'
new URL('https://board.example.com/help').origin;
// 相同的源URL 是一个内置类,可以将地址解析为带名称的部分。它的 origin 属性不包含路径和查询参数。提供的网页地址已在起始代码中固定。本次练习会比较源;下一步将让服务器授予跨源访问权限。
请求的 Origin 请求头已经包含这个源值;下一课会读取这个请求头。
挑战
简单这是一个小型练习项目。项目已提供设置,你只需编辑 exercise.js。
如果提供的地址与页面具有相同的源,则返回 {"same":true},否则返回 false。向 /result 发送 POST 请求,并附上 {"address":"https://board.example.com/api/tasks"},会得到 true。将 https 改为 http,或更改主机或端口,都会得到 false。本练习中的地址都是有效的绝对 URL。
初始的 GET /result 使用提供的示例 {"address": "https://board.example.com/api/tasks"}。使用带有 JSON 请求体的 POST /result 来尝试其他输入。
亲手试试
const page = 'https://board.example.com/tasks';
export function exercise({ address }) {
return { same: address === page };
}
REST API中的所有课
自己练习: Express 在线编辑器