php – Zend Framework 2 – 来自其他服务器的AJAX请求

我有2个域(域A,域B).

在域A上放置了ZF2应用程序,一切正常.

在域B上放置着陆页(具有用于收集数据的表单的小站点).

从登陆页面我想将表单数据发送到域A上的应用程序(AJAX请求).

不幸的是,域A上的ZF2应用程序没有收到数据,也没有显示结果.
当我从ZF2应用程序所在的同一域制作AJAX请求时,一切正常.

我尝试过使用JSONP但没有成功.

我没有任何其他线索如何强制这个工作.

解决方法:

正如Bodgan的回答所说,这是一个浏览器安全问题,而不是ZF2问题.一种流行的解决方法是更改​​域A的ACCESS-CONTROL-ALLOW-ORIGIN以允许来自域B的请求.这个和其他解决方案在Mozilla Developer Network(MDN)页面上讨论HTTP access control (CORS).

基本上,您需要向接收服务器(域A)指示可以响应资源请求.您可以在位于域A的Web根目录中的.htaccess文件中执行此操作.以下是一些简单的示例代码,它向域A指示它应响应来自所有域的资源共享请求:*.与上述相关的MDN文章对“跨域资源共享(CORS)”进行了更深入的讨论.请记住,存在安全隐患,在大多数情况下,您不希望将服务器打开到来自* origin的请求,而是打开由您自己控制的特定主机.

Options +FollowSymlinks
RewriteEngine on

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...