jquery – 在Apache中启用了CORS,但是AJAX不工作(chrome表示原始不允许)

我试图让一些 AJAX在两个子域之间工作.

rails.mydomain.com和mydomain.com

在apache中,在/ etc / apache2 / sites-available /我有我的rails.mydomain.com文件:

<VirtualHost *:80>
    Header add Access-Control-Allow-Origin "http://www.mydomain.com"
    Header add Access-Control-Allow-Origin "http://www.dev-mydomain.com"
</VirtualHost>

然而,每当我尝试从http://www.dev-mydomain.com做一个简单的ajax测试请求,在Chrome中,我得到:“XMLHttpRequest无法加载http://rails.mydomain.com/directory. Origin-Control-Allow-Origin不允许Origin http://www.dev-mydomain.com.

任何人都知道我失踪了什么

解决方法

正如Dahazer的链接指出,最好的选择是设置一个Access-Control-Allow-Origin标头.这绝对不适合生产,但是您可以在开发模式下回发Origin标题.

如果您仍然遇到问题,可能您在响应中没有设置足够多的CORS头.根据我在chrome中进行跨域ajax的经验,(不使用jquery心灵),我还需要设置以下标题:

Access-Control-Allow-Headers : X-Requested-With,Content-Type

鉴于我使用除POST和GET之外的HTTP方法,我也需要设置

Access-Control-Allow-Methods : GET,PUT,POST,DELETE

不过最重要的是,我建议您阅读html5 CORS教程,特别是CORS on the server部分.根据您的具体使用情况,它应该可以让您了解配置CORS的不同方式,无论是在服务器还是客户端(在您的情况下为jquery的ajax配置选项).

相关文章

1.第一步 设置响应头 header(&#39;Access-Control-Allow...
$.inArray()方法介绍 $.inArray()函数用于在数组中搜索指定的...
jquery.serializejson.min.js的妙用 关于这个jquery.seriali...
JS 将form表单数据快速转化为object对象(json对象) jaymou...
jQuery插件之jquery.spinner数字智能增减插件 参考地址:http...