【问题标题】:Get redirect URL although no 'Access-Control-Allow-Origin' header尽管没有“Access-Control-Allow-Origin”标头,但获取重定向 URL
【发布时间】:2017-09-19 07:23:26
【问题描述】:

以下问题。我正在尝试通过具有重定向的 ajax 调用站点,但由于“没有 'Access-Control-Allow-Origin' 标头”错误,请求失败:

XMLHttpRequest cannot load https://somesite.com. Redirect from 'https://somesite.com' to 'https://someothersite.com/index.php' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://anysite.com' is therefore not allowed access.

我想要的是显示在错误响应中的重定向 URL(并且是可变的)。我似乎无法访问它,但由于它显示在错误响应中,我认为它应该可以访问以某种方式

            $.ajax({
                type: "POST",
                url: "https://somesite.com"
            });

感谢您的帮助。

【问题讨论】:

  • 请参考这个链接已经解释好了(https://stackoverflow.com/questions/28547288/no-access-control-allow-origin-header-is-present-on-the-requested-resource-err)
  • @Legman 请重新阅读问题。
  • 此错误消息看起来像是您的网络开发工具会抛出的错误消息,而不是您可以从 Web API 中的任何位置访问的错误消息。 (即我认为你不能......)
  • @Kaiido 可能是通过 ajax 的错误函数?即便如此,要获得他提到的网址似乎不可能正确地做到这一点
  • @ElmerDantas 如果 OP 可以访问服务器,那么我想它会解决整个问题......(如果是同源请求,很容易知道我们被重定向到哪里: fetch('/some_page').then(r=>{if(r.redirected)console.log('redirected to ', r.url}))

标签: javascript jquery ajax redirect


【解决方案1】:

您不能在与调用不同的域上执行 AJAX 请求。例如,如果您在 https://yoursite.com 上进行 AJAX 调用,则不能调用 https://anysite.com,除非服务器 is explicitly allowing it

我建议通过代理传递请求。您可以在您的服务器上调用 PHP(或其他)路由,该路由将向 https://somesite.com 发出 cURL 请求并为您获取结果。

【讨论】:

  • 他想从错误信息中解析出'someothersite.com/index.php',而不是绕过错误信息。
  • 实际上不是来自远程服务器的响应错误消息,而是浏览器的问题。我不确定您是否可以从浏览器 api 获取整个错误堆栈。
猜你喜欢
  • 2012-03-25
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 2016-08-12
  • 2017-09-19
  • 2015-04-02
相关资源
最近更新 更多