【问题标题】:Configure Brackets Server to avoid Access-Control-Allow-Origin errors配置 Brackets Server 以避免 Access-Control-Allow-Origin 错误
【发布时间】:2013-10-08 05:47:41
【问题描述】:

在我的代码中,我使用 jQuery 从不同域的另一台服务器获取一些 JSON,并在浏览器中出现错误。

XMLHttpRequest cannot load http://url_containing_json.com. Origin http://localhost:53651  is not allowed by Access-Control-Allow-Origin

是否容易配置 Brackets 服务器以允许这样做?还是我需要设置自己的服务器才能做到这一点?

【问题讨论】:

    标签: jquery adobe-brackets


    【解决方案1】:

    此限制来自网络浏览器,而不是服务器。它被称为same-origin security policy(又名同域策略)。

    有问题的http://url_containing_json.com“JSON 服务器”是什么?它是您可以控制的服务器吗?如果是这样,那么您可以:

    A) 将您的代码上传到“JSON 服务器”本身,以便您的网站由同一个域提供服务;或

    B) 将您的代码上传到其他临时服务器,并在 JSON 服务器上使用 CORS 将临时服务器的域名列入白名单(JSON 服务器将提供 Access-Control-Allow-Origin HTTP 标头,如错误消息中所述)。

    另一方面,如果“JSON 服务器”完全是第三方的,它是否真的想要像您这样的其他网站获取其 JSON?如果是这样,那么它应该已经支持 CORS(使用一揽子允许所有策略)或 JSONP(一种较旧的允许访问方式,尽管您的请求需要稍微不同地设置)。

    如果 JSON 服务器不允许 允许跨域请求,您有最后的选择:使用您自己站点的服务器作为代理。您的页面不是直接 ping JSON 服务器,而是您的页面 ping 自己的服务器,然后代表页面 ping JSON 服务器。

    所有这些方法都需要运行您自己的服务器,而不是使用内置的括号“localhost”服务器。您可以通过 File > Project Settings... 将括号指向您自己的服务器,但请注意,这将禁用某些功能,例如 Live HTML Development。 (但如果您能够使用上面的选项“B”,您可能会破解您的 hosts 文件,以通过更改其明显域来继续使用内置的 Brackets 服务器)。

    希望有帮助!

    【讨论】:

    • 所以,在我发布之前研究这个问题时,似乎是通过服务器添加标题的问题,如下面的链接,因此我认为有一些方法可以做到这一点括号中的内部服务器,但我不知道如何访问它或它位于何处。对我来说,使用括号的全部意义在于实时预览功能,所以很高兴知道如何配置它的内部服务器stackoverflow.com/questions/5008944/…
    • 不幸的是,情况正好相反——您需要向您正在联系的服务器添加一个标头。本例中的“JSON 服务器”。如果您不控制该服务器并且它不想让您访问(即它不提供该标头或基于 JSONP 的 API),那么您的选择非常有限。即使在生产中也是如此。
    • 您介意我问一下您要联系的服务器是什么吗?
    【解决方案2】:

    遇到了完全相同的问题。我解决这个问题的方法是使用 jsonp ajax 请求类型,使用 $.ajax() 调用的 dataType 参数。 请参阅此通话中的JQuery documentation

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 1970-01-01
      • 2017-06-15
      • 2014-03-05
      • 2021-06-17
      • 2017-12-06
      • 2019-08-08
      • 2017-06-15
      • 2023-01-13
      相关资源
      最近更新 更多