表单提交工作,但 ajax 的 CORS 问题
Posted
技术标签:
【中文标题】表单提交工作,但 ajax 的 CORS 问题【英文标题】:Form submission working, but CORS issue with ajax 【发布时间】:2017-09-03 10:06:53 【问题描述】:我有一个表单,其中包含对处理帖子的站点的操作。当我在操作中使用 url 点击提交时,它可以工作。问题是,当表单提交或出现错误时,它会将我带到另一个页面,因此显示“成功”或“错误”(我不希望它带我到另一个页面,只需将响应返回到我的页面,这样我就可以制作模式或其他东西)。我尝试了许多不同的方法,但是当我使用 AJAX 时,我得到了“Access-Control-Allow-Origin”。如果我已经被允许在没有它的情况下发帖,我为什么会得到这个?
当表单标题为:
form accept-charset="UTF-8" class="" id="contestForm" enctype="multipart/form-data" action='url' method='post'>
我提出的请求示例。
$.ajax(
method: 'POST',
url: url,
dataType: 'json' or 'jsonp',
headers: 'Access-Control-Allow-Origin: *,
);
等等,等等(抱歉,这可能不完整,因为我在提问之前已经重新开始了)。知道如何在点击提交按钮后不进入提交页面吗?
附:我使用 Flockler 进行提交,我无法控制如何将数据发布到他们的服务器。
【问题讨论】:
您发布的服务器也需要针对 CORS 请求进行配置 我在看那个,我会再检查一次。谢谢你。我们以前没有使用过,对这种类型的表单提交仍然是新手 是的,您似乎从错误的一端得到它。您发布的服务器必须授权您这样做,您不能伪造自己的请求来允许您这样做,这将完全违背安全目的。 @b.enoit.be 可以理解。谢谢 【参考方案1】:请在服务器中添加CORS header ‘Access-Control-Allow-Origin:<requster_domain>’
以接受您的请求。通过 Ajax,它打开了一个安全威胁,因此浏览器阻止了它,这是有道理的。否则任何人都可以打开浏览器控制台并可能用 ajax 调用轰炸服务器。但是,如果您的服务器信任来自您的域的调用,那么安全风险就会得到缓解。
我希望这会有所帮助。
【讨论】:
以上是关于表单提交工作,但 ajax 的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
通过 Ajax 提交表单 - FormData 始终为空 [重复]