【问题标题】:Cross domain AJAX results in 403 forbidden跨域 AJAX 导致 403 被禁止
【发布时间】:2012-12-24 18:29:01
【问题描述】:

我们正在尝试通过 POST 进行跨域 AJAX 调用。如果我们直接尝试从aaa.com 访问bbb.com,它将要求提供凭据。只有在提供凭据后,我们才能访问bbb.com。现在以同样的方式,当对不同的域进行 AJAX 调用时,在这种情况下 bbb.com 我收到 403 禁止错误。

我尝试添加授权标头,现在在请求标头中,我看到了以下标头,但即使在拥有授权标头后,我仍然遇到问题。

接受 text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
接受编码 gzip,放气
Accept-Language en-US,en;q=0.5
Access-Control-Request-He... authenticationindicator,authorizationtoken
访问控制请求我... POST
授权基本 TG9uZG9uOkJiZ0JlbjE4NTk=
缓存控制无缓存
托管 aaa.com
来源 bbb.com
编译指示无缓存
代理连接保持活动
用户代理 Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0

有谁知道我们如何解决 403 禁止问题?

【问题讨论】:

  • 当您从 bbb.com(相同的 orogin)发出相同的请求时,bbb.com 会回复什么? 403 不是由同源策略限制产生的,而是由您在 bbb.com 上的服务器提供的,因为它的配置等原因。
  • 您可能正在寻找 JSONP 解决方案或设置服务器端代理来处理对其他域的请求。看看这里:stackoverflow.com/questions/2558977/ajax-cross-domain-call

标签: javascript jquery ajax http-headers


【解决方案1】:

听起来像是跨域问题 - https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

您可能想要添加一些从 bbb.com 返回的标头,如下所示:

Access-Control-Allow-Origin: *

希望对您有所帮助, 克里斯

【讨论】:

  • 当然这只有在OP可以修改bbb.com时才有效。
  • 这不会完全暴露bbb.com 的安全漏洞吗?
【解决方案2】:

您不能进行跨域 AJAX 调用。

如果您不想从其他域获取一些信息作为您自己的信息,您可以使用 PHP 作为服务器站点,然后对您自己的 php 脚本进行 ajax 调用。

另一种解决方案是使用JSONP

【讨论】:

  • 是的,但是这里是 post 请求,不是 get,所以我不能使用 jsonp
  • 你可以,启用 CORS。
【解决方案3】:

ajax 不允许跨域调用。为此目的使用 jsonp。 http://jsonp.jit.su/

【讨论】:

    【解决方案4】:

    Ajax 不允许跨域调用。如果你想这样做,你可以让你的 Ajax 代码调用 PHP(或任何你选择的)可以访问 bbb.com 的代码,然后你可以将此数据返回给客户端。

    【讨论】:

      猜你喜欢
      • 2021-06-17
      • 2012-12-25
      • 2017-04-08
      • 2012-10-13
      • 2021-01-31
      • 2012-12-24
      • 2017-10-30
      • 1970-01-01
      • 2019-04-17
      相关资源
      最近更新 更多