【问题标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access [duplicate]请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“http://localhost:8080”[重复]
【发布时间】:2019-02-04 23:32:38
【问题描述】:

我从 React JS 调用 Drupal API 并收到以下错误:

Failed to load http://l-and-d.dd:8083/node?_format=json: 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:8080' is therefore not allowed access.

我已经允许我的 Drupal 服务器上的所有请求,但我仍然收到此错误。 我认为错误出在客户端。 我还在 webpack.config.js 文件中添加了标题 这是 webpack.config.js 文件

const path = require('path')
module.exports = {
    entry: './src/app.js',
    output: {
        path: path.join(__dirname, 'public'),
        filename: 'bundle.js'
    },
    module: {
        rules: [{
            loader: 'babel-loader',
            test: /\.js$/,
            exclude: /node_modules/
        }, {
        test: /\.scss$/,
        use: [
            'style-loader',
            'css-loader',
            'sass-loader'
        ]
        },
       {
            test: /\.(eot|svg|woff|woff2|ttf|png|svg|jpg|jpeg|bmp|gif|pdf)$/,
            use: [
                'file-loader'
            ]}
        ]
    },
    devtool: 'cheap-module-eval-source-map',
    devServer: {
        contentBase: path.join(__dirname, 'public'),
        historyApiFallback: true,
        headers: {
            'Access-Control-Allow-Origin' : '*'

        }
    }
}

我也尝试在我的代码中添加自定义标头,但这也不起作用, 这是API调用代码:

axios({
    method: 'POST',
    url: 'http://l-and-d.dd:8083/node?_format=json',
    data: node,
    headers: {'Access-Control-Allow-Headers': '*',
            'Access-Control-Allow-Origin': '*',
             'Access-Control-Expose-Headers':'*',
            'Content-Type':'application/json',
            'Accept':'application/json',
            'X-Custom-Header': '*' }
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

【问题讨论】:

    标签: reactjs cors webpack-dev-server drupal-8


    【解决方案1】:

    尝试为 drupal 安装 CORS 模块并将 cors 模块中的值设置为“*”。 https://www.drupal.org/project/cors

    【讨论】:

    • 我已经安装了模块并配置了 *
    【解决方案2】:

    这是由于您的文件位于不同的端口并且您的 reactjs 在不同的端口中运行,一旦应用程序部署在同一环境中,或者如果您现在需要修复它,您可以在其中添加此扩展程序,此问题将自动解决你的浏览器link

    【讨论】:

    • 是的,我的 Drupal 在端口 8083 上运行,React 在 8080 上运行。有没有办法在不添加扩展的情况下在生产中解决这个错误,有什么方法可以操作端口?
    • 是的,我告诉过这个问题将在生产中自动解决,因为在生产中两者都将在同一个端口中
    • 对不起,我错误地写了生产,我的意思是有没有办法在开发中解决这个问题而不添加扩展。谢谢
    • 没有扩展我不确定参考stackoverflow.com/questions/20035101/…
    猜你喜欢
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2018-08-12
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多