當我運行服務器上的和HTTP.post
命令並使用標頭通過cookie標識自己時,我可以毫無問題地訪問(安全)網站,與所需的憑據。我正在使用HTTP包。Meteor:使用HTTP.get(CORS錯誤)從客戶端訪問網站
但是我想從客戶端本身發生同樣的事情。下面是在客戶端代碼:
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地址。我正在使用兩個應用程序,一個只是託管客戶端代碼,另一個只託管服務器端代碼。
感謝您的提前幫助,感謝!
新增:選項= { 超時:timeoutMs, 頭:{ 「接受」:「text/html的,是application/xhtml + xml,application/xml; q = 0.9,image/webp,*/*; q = 0.8「, 」Upgrade-Insecure-Requests「:」1「, 」Accept-Language「:」en-US,zh ;訪問控制 - 允許 - 方法「:」GET,POST「, 」訪問控制 - 允許 - 來源「:」*「, 」q = 0.8,de; q = 0.6「, 」Access- Allow-Headers「:」X-Requested-With「 } };但我從預檢請求中獲得相同的錯誤消息 – a4xrbj1
@ a4xrbj1如果清除HTTP.get('? –
)中的任何頭文件,會發生什麼?如果我將每個頭文件放在名爲options的變量中,或者我保持不變該對象直接在HTTP.get中 - 問題不在於格式。 – a4xrbj1