CORS ajax 请求澄清
CORS ajax request clarification
所以我在云服务上部署了一个 API。出于测试目的,我使用各种 HTTP 客户端,如 Postman
、Paw
和 RestClient
向我的 API 发送请求,它们都工作正常。但是当我使用 jQuery
、reqwset
或任何其他方式从浏览器发送 AJAX 请求时,我收到以下错误:
XMLHttpRequest cannot load
{https://url/to/my/api/on/google-app-engine}. No
'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://localhost:8000' is therefore not allowed
access
那么为什么 HTTP 客户端可以工作但浏览器会抛出错误?如果我在服务器上启用 CORS 有什么风险吗?
这是因为网络浏览器的“同源”政策。这可以防止一个网站上的脚本代表您在另一个网站上发出请求。
只要您信任允许的客户端,启用 CORS 就是安全的,如果客户端位于本地主机,则情况可能并非如此(因为您通常无法控制本地主机)。
特殊情况:如果客户端无法在服务器域上执行更改,那么通常启用 CORS 是安全的。
所以我在云服务上部署了一个 API。出于测试目的,我使用各种 HTTP 客户端,如 Postman
、Paw
和 RestClient
向我的 API 发送请求,它们都工作正常。但是当我使用 jQuery
、reqwset
或任何其他方式从浏览器发送 AJAX 请求时,我收到以下错误:
XMLHttpRequest cannot load {https://url/to/my/api/on/google-app-engine}. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access
那么为什么 HTTP 客户端可以工作但浏览器会抛出错误?如果我在服务器上启用 CORS 有什么风险吗?
这是因为网络浏览器的“同源”政策。这可以防止一个网站上的脚本代表您在另一个网站上发出请求。
只要您信任允许的客户端,启用 CORS 就是安全的,如果客户端位于本地主机,则情况可能并非如此(因为您通常无法控制本地主机)。
特殊情况:如果客户端无法在服务器域上执行更改,那么通常启用 CORS 是安全的。