从子域请求数据时如何避免跨源问题?

时间:2014-12-16 17:41:36

标签: jquery ruby-on-rails ajax cross-domain cloudflare

在我的网站www.example.com上,我向子域提交了ajax请求:

function submit(json_data) {
  return $.ajax({
     type: 'POST',
     url: "https://sub-domain.example.com",
     data: json_data
  });
}

https://sub-domain.example.com指向与example.com不同的IP地址(在Amazon ec2上)。这一切都习以为常。但是,当我将example.com更改为仅HTTPS时,我开始收到如下错误:

  

XMLHttpRequest无法加载https://sub-domain.example.com。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“https://www.example.com”访问。响应的HTTP状态代码为522。

我使用Cloudflare。修复此错误的简单方法是什么?

  • 我可以更改Cloudflare中的设置,以便没有问题吗?我想在example.com/sub-domain上设置一个页面,该页面指向与以前相同的IP地址,但这似乎不可能。
  • 我可以对请求进行简单的更改吗?我尝试使用jsonp,但这不适用于POST。
  • 如果无法做到这一点,如何更改实际的子域以允许来自example.com的此类请求?

2 个答案:

答案 0 :(得分:0)

您必须在子域上启用cors请求,并允许域 www.example.com 向您的子域发出请求。

Check this page也许它会帮助你。

答案 1 :(得分:0)

尝试添加

config.action_dispatch.default_headers['Access-Control-Allow-Origin'] = '*'

到application.rb并重新启动应用服务器。