【问题标题】:Translate ajax call to CORS将 ajax 调用转换为 CORS
【发布时间】:2015-07-25 15:04:23
【问题描述】:

我正在尝试使用以下代码通过本地主机访问 API:

  $.ajax({
            url: "http://domain.xxx.net/api/tokens.json?email=xxx@xxx.net&password=xxx",
            //method: "GET",
            headers: { "Accept": "application/xml", "Content-Type": "application/xml", "Access-Control-Allow-Origin": "*"},
            dataType: "JSON",
            success:function(data){
                alert(data);},
            success:function(e){
                alert(e.message);}

    });

我通过互联网了解到,由于以下错误,这是不可能的。

请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:3000' 因此不允许访问。

经过一些研究,据说我可以使用 JSONP 或 CORS。我能够使用 JSONP,但是,我收到了一个 js 错误,因为 API 只支持 JSON 和 XML,而不支持 JSONP。现在我正在尝试将我的 ajax 调用转换为 CORS,但我根本无法理解语法。我总是收到关于“Access-Control-Allow-Origin”的相同错误。

希望有人能帮我翻译一下。谢谢。

【问题讨论】:

  • CORS 支持必须由服务器实现...所以除非您可以控制服务器,否则您无能为力
  • CORS 并不是你在 JS 中真正改变的东西,它是由服务器完成的......
  • 我遇到了同样的问题,你必须从服务器 api 端启用 Access-Control-Allow-Origin。它与标题无关
  • 如果服务器不支持 CORS 或 JSONP,那么另一种可能的解决方案是使用您的 Web 服务器进行远程 API 调用。即从您的站点向您的 Web 服务器发送一个 ajax 请求,然后从服务器您可以进行远程 api 调用

标签: javascript jquery ajax json cors


【解决方案1】:

Access-Control-Allow-Origin 应该在响应标头中。听起来您尝试从中获取数据的服务器未启用 CORS(设置 Access-Control-Allow-Origin 的响应标头)。如果是这种情况,我认为您将无法通过 Javascript 获取资源。您需要从后端执行此操作。

【讨论】:

    【解决方案2】:

    您无法通过浏览器执行此操作。您需要从后端执行此操作。如果你想使用javascript,你可以使用NodeJS

    【讨论】:

      【解决方案3】:

      致那些想要跨域访问以进行测试的人。一种可能的解决方法是禁用浏览器的网络安全。

      对于 chrome 用户:关闭所有浏览器会话,然后在终端中运行以下命令:

      open -a Google\ Chrome --args --disable-web-security
      

      希望这篇文章有所帮助。

      【讨论】:

        猜你喜欢
        • 2014-02-06
        • 2011-06-26
        • 2017-01-04
        • 1970-01-01
        • 2020-07-21
        • 2013-08-19
        • 1970-01-01
        • 1970-01-01
        • 2022-11-27
        相关资源
        最近更新 更多