【问题标题】:Alternative way to request cross-site AJAX request in development在开发中请求跨站点 AJAX 请求的替代方法
【发布时间】:2023-04-05 02:29:01
【问题描述】:

AngularJS 应用中从 http://localhost:8080http://foo.com 的 AJAX 请求失败,因为浏览器不允许跨站点请求和浏览器说:

"请求头域 Content-Type 不被允许 访问控制允许标头。”

但是还有其他方法可以使用 JSONP 来解决,或者可能会在服务器端编写额外的代码,但我不想在开发阶段这样做。

是否有任何替代方法可以在服务器端不进行任何配置且在开发阶段(而非生产阶段)编写任何额外代码的情况下进行跨站点?

【问题讨论】:

    标签: angularjs cross-domain


    【解决方案1】:

    最后,我发现另一种方法就是安装这个chrome plugin。无需编写任何额外的代码。但我不知道安全性如何影响这个插件。

    【讨论】:

      【解决方案2】:

      有一个纯 javascript 替代方案,它使用代理绕过此约束。

      它被称为 XDomain:

      https://github.com/jpillora/xdomain

      第 1 步:将此 proxy.html 文件放在服务器项目的根目录中:

      <!DOCTYPE HTML>
      <script src="//cdn.rawgit.com/jpillora/xdomain/0.7.3/dist/xdomain.min.js" master="*"></script>
      

      第 2 步:将此脚本添加到客户端:

      <script src="//cdn.rawgit.com/jpillora/xdomain/0.7.3/dist/xdomain.min.js" slave="http://foo.com/proxy.html"></script>
      

      就是这样! 玩得开心。

      【讨论】:

      • 是的!这很棒,但还是有点写代码:)
      • 鉴于 OP 明确询问是否有任何替代方法可以使跨站点在服务器端没有任何配置,这似乎没有就像问题的实际答案一样——因为对于 XDomain,您需要“在要与之通信的域上添加 proxy.html”。如果您控制要与之通信的域,可以在域中放置文件,您也可以在该域中放置例如.htaccess 文件以发送所需的 CORS 标头。所以基本上,XDomain 只是为了成为一种更方便的方式来处理服务器端,而不是在那里进行 CORS 配置。
      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 2012-07-17
      • 2023-03-15
      • 2015-01-28
      • 2011-07-02
      相关资源
      最近更新 更多