XMLHttpRequest 无法加载 https://[website].com 不支持跨域请求

Posted

技术标签:

【中文标题】XMLHttpRequest 无法加载 https://[website].com 不支持跨域请求【英文标题】:XMLHttpRequest Cannot Load https://[website].com Cross Origin Requests are not supported 【发布时间】:2017-07-23 03:38:33 【问题描述】:

我在我的 MacBook(使用 macOS)上成功地使用 phantomjs --web-security=no myfile.js 运行了我的 javascript 文件,但未能在 Ubuntu 上运行它,并出现此错误:

XMLHttpRequest Cannot Load https://[website].com Cross Origin
Requests are not supported

我发现我的问题与以下问题不同

    XMLHttpRequest cannot load Cross origin requests are only supported for HTTP XMLHttpRequest cannot load https://www.[website].com/

对于第一个,我的错误消息只是“不支持”,但没有告诉我“仅支持 HTTP”(尽管我将请求发送到 HTTPS url)。 对于第二个,我的错误消息不需要“Access-Control-Allow-Origin”标头。

我尝试了 PhantomJS 的 --debug=true 选项,结果发现当在 Ubuntu 中运行时,PhantomJS 会默默地丢弃 cookie。

在我的情况下,谁能告诉我如何解决这个问题?

【问题讨论】:

实际的父请求是什么?子请求报错,可能是父子请求的协议不同。 @ThanNgoHoai 我的请求只是var request = new XMLHttpRequest(),然后是request.open('GET','my URL',false); request.sent()。我不知道什么是子请求。 所以您的“我的网址”应该与当前页面的协议和服务器名称相同。 是的,我认为它们是相同的,否则它无法在我的 macOS 中运行而不会出现此错误。 我在 phantomjs 中尝试了--debug=true 选项。事实证明,当在 Ubuntu 中运行时,PhantomJS 会默默地丢弃 cookie。恐怕是这个错误的触发因素? 【参考方案1】:

phantomjs 似乎有一个选项可以让 XMLHttpRequests 从本地文件发送到 http 服务器:--local-to-remote-url-access

供参考:http://phantomjs.org/api/command-line.html

【讨论】:

以上是关于XMLHttpRequest 无法加载 https://[website].com 不支持跨域请求的主要内容,如果未能解决你的问题,请参考以下文章

XMLHttpRequest 无法为 instagram 加载

XMLHttpRequest 无法加载 https://sandbox.itunes.apple.com/verifyReceipt。 Access-Control-Allow-Origin 不允许来

Safari 10.1:由于访问控制检查,无法加载带有查询参数的 XMLHttpRequest

使用 Angular Material MD Stepper 时,由于访问控制检查,XMLHttpRequest 无法加载 XXXX

xmlhttprequest 无法加载文件

XMLHttpRequest 无法加载。?