跨域ajax表单post – 如何允许?
我正在使用jQuery和jQuery表单插件
jQuery表单插件中有一个方法ajaxSubmit。 你传递一个表单,然后通过ajax提交它,你得到一个响应。 我想知道这是如何可能的,因为表单位于与网页不同的服务器上。 (不同的域名)。 它似乎工作,我得到了我可以处理的回复。 这是如何运作的?
域名表格托管在( http://example.com )
表格url:127.0.0.1
PHP Point Of Sale <script src=""> <script src=""> <form id="formCheckout" method="post" action=""> $value) { ?> $("#formCheckout").ajaxSubmit({ success: function(response) { console.log(response); } });
如果服务器的响应标头为'Access-Control-Allow-Origin': '*'
或类似的东西,它将返回响应。
简而言之,这与jQuery无关,而且与服务器有关。
在上面的例子中, *
是表示所有来源的通配符。 但它也可以指定一个起源列表。
请记住,即使在CORS请求中,您也可以始终向服务器发送请求,服务器将始终收到请求。 它只会返回一个响应,如果它想要(在这种情况下,使用访问控制头,它会。)
如果服务器没有那个头,那么你将在控制台中得到一个常见的错误,说XMLHTTPRequest could not complete because the server does not allow cross-origin communication
或者它说的任何内容。
它取决于服务器使用的体系结构,但如果它是使用Express的Node.js服务器(例如),您会看到类似这样的内容是server.js
文件或者在哪里:
app.use(function(req, res) { res.header('Access-Control-Allow-Origin', '*') });
这种方法在不同的服务器架构(如Apache)上会有很大的不同,但是头部标准化为HTTP的一部分,因此该部分保持不变。
有关示例,请参阅AJAX Cross Domain 。