根据
https://javascript.info/fetch-crossorigin#unsafe-requests
安全标头 – 唯一允许的自定义标头是:
...
,值为Content-Type
、application/x-www-form-urlencoded
或multipart/form-data
。text/plain
如果我正确理解后果:
发送带有
POST
标头 Content-Type
的跨源 appliation/json
请求将首先触发 preflight OPTIONS
请求,需要正确处理该请求...在处理实际 POST
请求之前。
=> 为什么
application/json
被认为是不安全的;直接接受请求会有什么风险?
(我已经花了几个小时尝试修复 CORS 设置,并且想了解根本问题。)
POST 请求被认为是不安全的,因为它们应该改变服务器上的内容。
例如:您不希望 Alice 访问 Mallory 的邪恶站点,并让其中的一些 Ajax 向 Alice 工作的公司的 Intranet 发出 HTTP POST 请求,并为 Mallory 创建一个预约来办公室并通过安检。您并不希望马洛里的网站能够删除您网络邮件中的所有邮件。等等
您可以在enctype
属性中设置的内容类型的POST 请求不会预检……但无论如何您都可以使用常规 HTML 表单发出这些请求(因为常规 HTML 表单早于浏览器实现跨源安全性的想法)因此,如果您对这些内容类型执行任何操作,您已经需要明确的 CSRF 防御。
这是关于简单请求还是不简单请求的问题。 访问 CORS:简单请求的目的是什么??