Cross-Origin 请求被阻止:缺少 CORS header ‘Access-Control-Allow-Origin’
Cross-Origin Request Blocked: CORS header ‘Access-Control-Allow-Origin’ missing
我是 运行 一个仅用于路由目的的快速服务器,客户端页面正在使用 axios 获取 url。我已经尝试了这一整天我能找到的所有可能的解决方案,但都没有成功。
- 我理解如果请求不是来自同一个域,它是
被目标服务器视为 CORS。
- 然后发送的响应带有 header 请求最初来自另一个域。
- 浏览器阻止了内容,因此无法作为响应读取
通过客户端页面上的响应代码块。
但是,我可以通过单击开发者控制台的响应选项卡在响应中看到 json 页面。
服务器页面
const express = require('express')
const cors = require('cors')
const app = express()
app.use(
cors({
credentials: true,
origin: [
'http://localhost:8080'
]
}),
)
app.options('*', cors());
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.sendFile( __dirname + "/public/" + "index.html" );
})
客户端页面
var nse = axios.create();
// delete nse.defaults.headers.common["Access-Control-Allow-Origin"];
//nse.defaults.headers.common['Access-Control-Allow-Origin']='http://localhost:8081';
// nse.defaults.headers.common['Access-Control-Allow-Methods']='POST, OPTIONS';
// nse.defaults.headers.common['Access-Control-Max-Age']= 86400;
// nse.defaults.headers.common['Access-Control-Allow-Headers']= 'Origin, Content-Type, Accept';
nse.get('https://www1.nseindia.com/live_market/dynaContent/live_watch/stock_watch/liveIndexWatchData.json'
,{ crossdomain: true })
.then(resp => {
console.log("xxxxx");
data = resp.data.data;
window.alert("hi");
})
.catch(function (error) {
if (error.response) {
console.log(error.response.data);
console.log(error.response.status);
}
});
我在 firefox 浏览器的开发者控制台中收到以下错误。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www1.nseindia.com/live_market/dynaContent/live_watch/stock_watch/liveIndexWatchData.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
我相信这是一个棘手的难题。请帮助我解决此错误,以便我能够以编程方式读取 JSON 响应。
服务器识别了请求,但没有将 Access-Control-Allow-Origin header 附加到响应中。浏览器期望这一点,并且由于它不存在,浏览器会抛出错误并阻止访问响应数据(即使您可以在开发工具中看到它)。
您需要在服务器上配置 CORS 以允许来自您发送请求的来源的请求。
我是 运行 一个仅用于路由目的的快速服务器,客户端页面正在使用 axios 获取 url。我已经尝试了这一整天我能找到的所有可能的解决方案,但都没有成功。
- 我理解如果请求不是来自同一个域,它是 被目标服务器视为 CORS。
- 然后发送的响应带有 header 请求最初来自另一个域。
- 浏览器阻止了内容,因此无法作为响应读取 通过客户端页面上的响应代码块。
但是,我可以通过单击开发者控制台的响应选项卡在响应中看到 json 页面。
服务器页面
const express = require('express')
const cors = require('cors')
const app = express()
app.use(
cors({
credentials: true,
origin: [
'http://localhost:8080'
]
}),
)
app.options('*', cors());
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.sendFile( __dirname + "/public/" + "index.html" );
})
客户端页面
var nse = axios.create();
// delete nse.defaults.headers.common["Access-Control-Allow-Origin"];
//nse.defaults.headers.common['Access-Control-Allow-Origin']='http://localhost:8081';
// nse.defaults.headers.common['Access-Control-Allow-Methods']='POST, OPTIONS';
// nse.defaults.headers.common['Access-Control-Max-Age']= 86400;
// nse.defaults.headers.common['Access-Control-Allow-Headers']= 'Origin, Content-Type, Accept';
nse.get('https://www1.nseindia.com/live_market/dynaContent/live_watch/stock_watch/liveIndexWatchData.json'
,{ crossdomain: true })
.then(resp => {
console.log("xxxxx");
data = resp.data.data;
window.alert("hi");
})
.catch(function (error) {
if (error.response) {
console.log(error.response.data);
console.log(error.response.status);
}
});
我在 firefox 浏览器的开发者控制台中收到以下错误。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www1.nseindia.com/live_market/dynaContent/live_watch/stock_watch/liveIndexWatchData.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
我相信这是一个棘手的难题。请帮助我解决此错误,以便我能够以编程方式读取 JSON 响应。
服务器识别了请求,但没有将 Access-Control-Allow-Origin header 附加到响应中。浏览器期望这一点,并且由于它不存在,浏览器会抛出错误并阻止访问响应数据(即使您可以在开发工具中看到它)。
您需要在服务器上配置 CORS 以允许来自您发送请求的来源的请求。