为啥在使用 XMLHttpRequest() 而不是表单时必须处理 Access-Control-Allow-Origin?

Posted

技术标签:

【中文标题】为啥在使用 XMLHttpRequest() 而不是表单时必须处理 Access-Control-Allow-Origin?【英文标题】:Why do I have to deal with Access-Control-Allow-Origin when using XMLHttpRequest() but not with forms?为什么在使用 XMLHttpRequest() 而不是表单时必须处理 Access-Control-Allow-Origin? 【发布时间】:2018-07-23 05:03:11 【问题描述】:

我在使用 XMLHttpRequest() 发出请求并获得 Access-Control-Allow-Origin 错误时遇到问题,但是当我使用如下形式时,我看不到任何问题。表单是否允许访问,这种差异的原因是什么?

const f = document.createElement("form");
f.setAttribute("method", 'post');
f.setAttribute("action", '****');

const f = document.createElement("input");
f.setAttribute("type", "hidden");
f.setAttribute("name", 'id');
f.setAttribute("value", token);

document.appendChild(f);
$frm.submit(f);

【问题讨论】:

【参考方案1】:

Access-Control-Allow-Origin 标头正在为 跨域 请求设置。 因此,当您通过XMLHttpRequest() 进行跨域 请求时,您必须允许请求来源。

表单执行同域请求,因此不需要Access-Control-Allow-Origin 标头。

【讨论】:

以上是关于为啥在使用 XMLHttpRequest() 而不是表单时必须处理 Access-Control-Allow-Origin?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在使用 XMLHttpRequest() 而不是表单时必须处理 Access-Control-Allow-Origin?

不使用本机 XMLHttpRequest 的原因 - 为啥 $.ajax 是强制性的?

为啥我不能使用 XMLHttpRequest 从本地网络获取 JSON 文件? [复制]

为啥我不能使用 XMLHttpRequest 从本地网络获取 JSON 文件? [复制]

为啥我使用xmlhttprequest抓取数据时主键跳转量大?

为啥叫 XMLHttpRequest?