首页 > 解决方案 > 跨域请求被阻止:CORS 标头“Access-Control-Allow-Origin”缺失

问题描述

我正在运行一个快速服务器只是为了路由目的,客户端页面正在使用 axios 来获取url。我已经尝试了一整天我能找到的所有可能的解决方案,但没有成功。

但是,我可以通过单击开发人员控制台的响应选项卡在响应中看到 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 响应。

标签: javascriptnode.jsaxioscorscross-domain

解决方案


服务器识别了请求,但是它没有将 Access-Control-Allow-Origin 标头附加到响应中。浏览器期望这一点,并且因为它不存在,所以浏览器会抛出错误并阻止访问响应数据(即使您可以在开发工具中看到它)。

您需要在服务器上配置 CORS 以允许来自您发送请求的来源的请求。

https://expressjs.com/en/resources/middleware/cors.html


推荐阅读