【发布时间】:2018-10-17 20:13:46
【问题描述】:
我正在尝试将电子邮件添加到 mailchimp 帐户,但我也在尝试在收集电子邮件后使用 javascript 做一些其他事情,这是我的 javascript:
function addEmail(){
var request = new XMLHttpRequest();
request.open('POST', 'https://EXTERNAL_URL', true);
var data = document.getElementById("mce-EMAIL").value;
request.send("EMAIL=" + data);
}
我得到了标准 No 'Access-Control-Allow-Origin' header is present on the requested resource。'错误
但是当我通过 HTML 表单提交时,我没有收到错误,下面是我的 HTML:
<form action="https://EXTERNAL_URL" method="POST" id="mc-embedded-subscribe-form"
name="mc-embedded-subscribe-form">
<div id="mc_embed_signup_scroll" class="info-title-small">
<input type="email" name="EMAIL" id="mce-EMAIL">
<div style="position: absolute; left: -5000px;">
<input type="text" name="b_77582e128704b86e538075b23_47bb2d7f84" tabindex="-1">
</div>
<div class="clear">
<input type="submit" value="add me" name="subscribe" id="mc-embedded-subscribe">
</div>
</div>
</form>
发生了什么事?
【问题讨论】:
-
使用服务器端代理将数据发布到远程服务器(mailchimp)。然后您会收到回复,而不必提交表单。然后,您的 ajax 将发布到您的代理
-
表单不会像 ajax 那样向脚本返回值,这就是导致违反 SOP 的原因。任何表单都可以在任何地方提交,但您只能通过 ajax 从您的网站或 w/cors 加载数据
标签: javascript html cors