所以我在云服务上部署了一个API。出于测试目的,我使用各种HTTP客户端,例如Postman
,Paw
和RestClient
来向我的API发送请求,它们都可以正常工作。但是当我使用jQuery
,reqwset
或其他任何内容从浏览器发送AJAX请求时,我收到以下错误:
XMLHttpRequest无法加载 {https://url/to/my/api/on/google-app-engine}。没有 '访问控制允许来源'标题出现在请求的上 资源。起源' http://localhost:8000'因此是不允许的 访问
那么为什么HTTP客户端可以运行但浏览器会抛出错误?如果我在服务器上启用CORS,有任何风险吗?
答案 0 :(得分:3)
这是因为网络浏览器的“同源”政策。这可以防止一个网站上的脚本代表您在另一个网站上发出请求。
只要您信任允许的客户端,启用CORS就是安全的,如果客户端位于localhost,则可能不是这种情况(因为您通常无法控制localhost)。
特殊情况:如果客户端无法在服务器域上执行更改,那么通常可以安全地启用CORS。