簡體   English   中英

流星:使用HTTP.get從客戶端訪問網站(CORS錯誤)

[英]Meteor: Accessing a website from the client with HTTP.get (CORS error)

當我從服務器運行HTTP.getHTTP.post命令時,可以使用標題通過cookie並使用所需的憑據來標識自己,從而可以HTTP.post訪問(安全)網站。 我正在使用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/作為真實示例。 從錯誤消息中可以看出,我目前正在從本地調用它。

知道我該如何實現嗎? 我是否缺少某些特定的標題? 我也嘗試了其他URL(包括我自己的網站空間),但收到相同的錯誤消息,因此它與我嘗試從中獲取的URL沒有任何關系。 似乎是瀏覽器出現了一個問題,它想要停止執行x腳本(如果我從閱讀的書中正確理解了它)。

解釋為什么我要從瀏覽器訪問它:我不想違反服務器的策略,因此請求應該來自客戶端IP地址而不是我的服務器IP地址。 我正在使用兩個應用程序,一個僅托管客戶端代碼,第二個僅托管服務器代碼。

感謝您的提前幫助,不勝感激!

看起來是cors問題。 嘗試php / js腳本(后端/ cors)中的標頭:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM