Meteor:使用HTTP.get从客户端访问网站(CORS错误)

时间:2016-04-21 03:55:21

标签: javascript http meteor client cors

当我从服务器运行HTTP.getHTTP.post命令时,我可以毫无问题地访问(安全)网站,使用标头通过cookie和所需的凭据来识别自己。我正在使用HTTP包。

但是我希望从客户端本身发生同样的事情。这是客户端的代码:

HTTP.get('https://www.securewebsite.com/login1.php', {
    timeout: 30000,
    headers: {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Upgrade-Insecure-Requests": "1",
        // "DNT": "1",
        "Accept-Language": "en-US,en;q=0.8,de;q=0.6"
        // 'Accept-Charset' : 'utf-8',
        // "Cookie": cookie
    }
}, function (err, res) {
    if (err) {
       // some error handling code
    } else {
       // doing something with res
    }
});

我必须将Accept-CharsetDNTcookie标头注释掉,因为它们被标记为不安全。错误消息,例如DNT:Refused to set unsafe header "DNT"(其他标题相同)

但即便如此,我在浏览器检查器(Chrome)中显示OPTIONS,并显示以下错误消息:

XMLHttpRequest cannot load https://www.securewebsite.com/login1.php. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 501.

请注意,https://www.securewebsite.com/login1.php只是一个例子,而不是我打电话的真实网站。您可以尝试http://www.awest.de/作为一个真实的例子。从我当前从本地调用它的错误消息中可以看出。

知道如何实现这一目标吗?我错过了一些具体的标题吗?我也尝试了其他网址(包括我自己的网站空间),但我收到了相同的错误消息,所以它与我试图获取的网址没有任何关系从。它似乎更像是一个浏览器问题,它想要停止一些x脚本执行(如果我从我读到的内容中正确理解它)。

解释我为什么要从浏览器访问它:我不想违反服务器的策略,因此请求应来自客户端IP地址而不是我的服务器IP地址。我使用的是两个应用程序,一个是托管客户端代码,另一个是托管服务器端代码。

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

看起来像是cors的问题。 尝试php / js脚本中的标题(后端/后期):

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header("Access-Control-Allow-Headers: X-Requested-With");