我不知道我明白這一點。我可以編寫一個簡單的服務器端代碼來獲取任何網站的HTML內容。在我的本地PC或任何主機上運行它,並從任何網站檢索任何頁面。但是這不能通過javaScript來完成?CORS服務器端與客戶端?爲什麼一個人工作,但另一個 - 不?
遠程主機怎麼可能知道哪種應用程序正在發出請求?出於安全目的,不允許跨站請求?我怎樣才能使用服務器端代碼完成相同的請求?並在本地或遠程任何地方運行此代碼?下面是一個簡單的例子,可以從天氣網站獲取HTML頁面內容,這很好。但是我不能在JavaScript代碼中做到這一點?沒有意義。
public static class WeatherManager
{
private static HtmlDocument document = new HtmlDocument();
public static MyWeather GetWeather()
{
try
{
var web = new HtmlWeb();
document = web.Load("http://www.weatheroffice.gc.ca/city/pages/on-143_metric_e.html");
}
catch (Exception ex)
{
throw new Exception("Weather is not loaded");
}
var mainContent = document.DocumentNode.SelectSingleNode("//*[@id='mainContent']");
var nownode = mainContent.SelectSingleNode("//section[1]/details/div/div");
var forecastnodes = mainContent.SelectNodes("//section[2]/details/table[1]/tr[2]/td");
// Do some processing....
}
}
但是,當我嘗試從角度作出類似的請求(或任何我認爲JS LIB)
getWeatherForecast() {
const url = 'https://weather.gc.ca/city/pages/on-143_metric_e.html';
return this.$http.get(url);
}
我得到這樣的
我知道。 .. CORS好,但如果它是爲了安全目的而完成的,我怎麼能夠按照我喜歡的方式來創建這些CORS請求,例如上面的服務器端代碼?