jquery - Apache 中启用了 CORS,但 AJAX 无法正常工作(chrome 表示不允许来源)

标签 jquery ruby-on-rails ajax apache cors

我正在尝试让 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 。Access-Control-Allow-Origin 不允许 Origin http://www.dev-mydomain.com。”

有人知道我错过了什么吗?

最佳答案

正如 Dahazer 的链接所指出的,最好的选择是设置单个 Access-Control-Allow-Origin header 。它绝对不适合生产,但您可以在开发模式下回显 Origin header 。

如果您仍然遇到问题,则可能是您没有在响应中设置足够多的 CORS header 。根据我在 chrome 中执行跨域 ajax 的经验(不使用 jquery mind),我还需要设置以下 header :

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 配置选项)。

关于jquery - Apache 中启用了 CORS,但 AJAX 无法正常工作(chrome 表示不允许来源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12143906/

相关文章:

javascript - 时间选择器单击一次不显示时间

javascript - 登录框的淡入淡出过渡

javascript - 如何在 ReactJS 中使用 JQuery

java - 如何通过AJAX在ActiveMQ中设置TimeToLive参数?

html - 使用 ajax 修改页面的问题,以及浏览器将未修改的页面保留在缓存中的问题

javascript - 导致问题的异步 url 验证

javascript - jQuery validate 只验证一个字段

ruby-on-rails - 在 Rails View 中截断 + 清理

ruby-on-rails - 通过 Capistrano 部署 Rails Spree 应用程序后,在此服务器上找不到请求的 URL/登录名

ruby-on-rails - 在 Heroku 上使用 MailGun 进行 Ruby on Rails 应用程序