当我从服务器运行HTTP.get
和HTTP.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-Charset
,DNT
和cookie
标头注释掉,因为它们被标记为不安全。错误消息,例如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地址。我使用的是两个应用程序,一个是托管客户端代码,另一个是托管服务器端代码。
感谢您的帮助,谢谢!
答案 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");