【问题标题】:Cross domain error even when ajax called made from same domain即使从同一域调用 ajax 也会出现跨域错误
【发布时间】:2013-06-21 07:36:32
【问题描述】:

我正在进行 ajax 调用以检查用户名的可用性。要调用的 url 被硬编码在 js 文件中。例如http://abc.com/users/check_availability

现在,当我从 http://abc.com 进行 ajax 调用时,它可以正常工作,但是如果我从 http://www.abc.com 进行调用,则会出现跨域错误。

XMLHttpRequest 无法加载 http://abc.com/users/check_availability?username=sd。 Access-Control-Allow-Origin 不允许来源http://www.abc.com

我该如何解决这个问题? jsonp是唯一的方法吗?

【问题讨论】:

  • 将对www.abc.com 上的页面的任何请求重定向到abc.com。如果您使用的是 Apache,则可以使用 mod_rewrite 执行此操作。

标签: jquery ajax cross-domain


【解决方案1】:

您是否尝试过在服务返回数据时设置备用 HTTP 标头值:

Access-Control-Allow-Origin:*

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

当我们尝试对不同子域下的服务进行 REST 调用时,这对我们很有用。

您不必设置 Access-Control-Allow-Origin: * 您可能会更加严格。但我们尝试这样做只是为了检查它是否有效。

澄清一下 - 我们仍然使用 json 而不是 jsonp

【讨论】:

  • 感谢 Sharath,我们在 abc.com/users/check_availability 中添加了 header("Access-Control-Allow-Origin: http://www .abc.com") 并且它开始工作了。
猜你喜欢
  • 2015-04-01
  • 1970-01-01
  • 2012-01-08
  • 2015-08-30
  • 2018-06-13
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多