为什么默认情况下禁用CORS(跨域资源共享)?

5
首先,我完全意识到我们已经有了很多关于此主题的答案和大量的文章。在打这些字之前,我刚刚阅读了这些答案:为什么CORS没有凭证是被禁止的?CORS是否被认为是不良实践? 我的特殊情况是这样的——我刚刚为我的练习项目设置了WebAPI2,其前端通过gulp browser-sync运行。我不知道这些端口是如何选择的,但假设Web API正在端口http://localhost:1234/上运行,而browser-sync在http://localhost:4321/上生成网站。因此,我通过angular的$http请求API并得到了著名的CORS错误(API控制器方法确实被调用),所以我猜测这是API返回的不允许。编辑:在提问之前,我通过NuGet安装了一个Web API的CORS包(文章在这里)来解决这个问题,只是为了参考后来可能需要的人。
所以,我在想,如果我部署了这个,除非我错过了什么,否则任何请求都会被拒绝。或者它不会被拒绝,因为我没有理解到的原因?禁止CORS只是MVC时代的一种回顾吗?还是API有某些目的?也许我只是在抱怨,但这让我感到困惑。
1个回答

6
CORS基于API返回的响应头信息。API不会拒绝响应请求,而是浏览器明确禁止处理响应。API将按照正常流程处理该请求。
当处理GET之外的其他内容时,CORS还需要首先向API发送“preflight”请求,以确保允许后续请求。这与返回标头的操作一样,这就是Web API NuGet包的作用。
出于安全考虑,CORS默认关闭。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接