跨域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 。