我尝试将电子邮件添加到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'标头出现在请求的资源上。'错误
但是当我通过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>
发生了什么?
答案 0 :(得分:3)
same-origin policy主要关注JavaScript(或其他浏览器端编程语言)读取服务器对客户端请求的响应。您的表单提交不违反同源策略,并且不会被阻止,因为它不会处理服务器响应。
根据MDN:
通常允许跨源写入。示例是链接,重定向和表单提交。某些很少使用的HTTP请求需要预检。
通常允许跨源嵌入。
跨域读取通常不允许,但读取访问通常会通过嵌入泄漏。例如,您可以读取嵌入图像的宽度和高度,嵌入脚本的操作或嵌入资源的可用性。