当前位置: 首页 > 知识库问答 >
问题:

CodeIgniter4+Vue+Webpack devServer CORS

澹台星光
2023-03-14

我正在研究Vue&CodeIgniter4,并使用https://github.com/flavea/ci4-vue作为一个起点。

不管我尝试了什么,在开发模式下,我总是得到这个讨厌的CORS错误:

CORS策略阻止从来源“http://example.com/public/api/book/get”访问“http://example.com:8080”的XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:请求的资源上没有“access-control-allog-origin”标头。

  • 这是我的CodeIgniter URL:http://example.com/public/api/book/get
  • 这是我的WebPack/Vue URL:http://example.com:8080
  1. 什么是CORS,
  2. CORS问题可能是由于我的PHP应用程序在端口80上运行,而我的VUE/Node/WebPack应用程序在端口8080上以开发模式运行。

我不明白我需要在哪里解决它...Apache,我的PHP应用程序,Vue,WebPack?(我怀疑是WebPack/Node)。

我的问题...我如何解决这个CORS问题为我的开发模式?

一些附加的背景信息:

>

  • 我已经设置好了所有内容,但在以开发模式运行站点时遇到了问题(即npm运行dev...在“生产”中运行站点时没有问题;即npm运行build)。
  • 上述参考代码库使用CodeIgniter4作为API URL;换句话说,我使用CodeIgniter for RESTful URL在MySQL/MariaDB数据库上执行一些错误的操作。
  • 我正在MAMP/macOS(Apache,端口80)上为我的CodeIgniter应用程序运行我的站点
  • 据我所知,在开发模式下,dev构建使用WebPack的devServer(见下文)

    const devWebpackConfig = merge(baseWebpackConfig, {
        module: {
        rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
        },
        // cheap-module-eval-source-map is faster for development
        devtool: config.dev.devtool,
    
        // these devServer options should be customized in /config/index.js
        devServer: {
        clientLogLevel: 'warning',
        historyApiFallback: {
            rewrites: [
            { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
            ],
        },
        // I added the following, seems to do nothing.
        headers: {
            "Access-Control-Allow-Origin": "*",
            "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
            "Access-Control-Allow-Headers": "Origin, Content-Type, X-Auth-Token"
        },
        hot: true,
        contentBase: false, // since we use CopyWebpackPlugin.
        compress: true,
        host: HOST || config.dev.host,
        port: PORT || config.dev.port,
        open: config.dev.autoOpenBrowser,
        overlay: config.dev.errorOverlay
            ? { warnings: false, errors: true }
            : false,
        //publicPath: config.dev.assetsPublicPath,
        //proxy: config.dev.proxyTable,
        quiet: true, // necessary for FriendlyErrorsPlugin
        watchOptions: {
            poll: config.dev.poll,
        }
        },
        plugins: [
        new webpack.DefinePlugin({
            'process.env': require('../config/dev.env')
        }),
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
        new webpack.NoEmitOnErrorsPlugin(),
        // https://github.com/ampedandwired/html-webpack-plugin
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: 'index.html',
            inject: true
        }),
        // copy custom static assets
        new CopyWebpackPlugin([
            {
            from: path.resolve(__dirname, '../static'),
            to: config.dev.assetsSubDirectory,
            ignore: ['.*']
            }
        ])
        ]
    })
    

    在我的.htaccess中,我添加了

    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "*"
    </IfModule>
    
    <FilesMatch "\.(js)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
    
  • 共有1个答案

    左丘修齐
    2023-03-14

    如果您希望防止本地开发环境中的CORS错误,并从其他web服务器(远程或本地)访问数据,可以通过代理配置非常容易地完成。此选项将每个请求重定向到远程URL的本地路径。https://webpack.js.org/configuration/dev-server/#devserverproxy

    在这种情况下,您甚至不需要CORS配置,因为您将在相同的本地环境中挂载外部路径,这样web浏览器就不会抱怨。远程地址当然必须是可信的。

     类似资料:
    • 目前想使用codeigniter4框架对下面的数据进行验证 验证用的代码如下 目前对于上述组合来说,运行后是不会得到任何错误的,但我希望是costDepartment的每个元素都对departmentId和percentage进行相应的检查,即按照上述测试用例应该会告诉我有percentage是需要填写的,请问这个需要怎么进行修改,谢谢。

    • 构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模式, Vue 的设计无疑受到了它的启发。因此在文档中经常会使用 vm 这个变量名表示 Vue 实例。 在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。全部的选

    • vue

      教程简介 本教程要实现一个简单的后台管理系统,包含登陆、数据列表、数据查询、列表分页、添加数据、修改数据和删除数据等功能,教程会从 Vue 入门开始讲解,包含 es6、Sass、Webpack、Bootstrap、jQuery 等技术,再到后台管理系统的一些常规功能,用 Vue 如何去实现。 也许会有人质疑 Vue 和 jQuery 的搭配,在我本人看来,jQuery 本身已很成熟,而且包含了很多

    • FAQ 哇,非常长的一页!是否意味着 Vue 2.0 已经完全不同了呢,是否需要从头学起呢,Vue 1.0 的项目是不是没法迁移了? 非常开心地告诉你,并不是!几乎 90% 的 API 和核心概念都没有变。因为本节包含了很多详尽的阐述以及许多迁移的例子,所以显得有点长。不用担心,你不必从头到尾把本节读一遍! 我该从哪里开始项目迁移呢? 首先,在当前项目下运行迁移工具。我们非常谨慎地把高级 Vue

    • Integration with Vue is easily done with the @tinymce/tinymce-vue package. To use it, install it with npm like this: npm install @tinymce/tinymce-vue For information on how to use the package, check

    • 本规范提供了一种统一的编码规范来编写 Vue.js 代码。这使得代码具有如下的特性: 其它开发者或是团队成员更容易阅读和理解。 IDEs 更容易理解代码,从而提供高亮、格式化等辅助功能 更容易使用现有的工具 更容易实现缓存以及代码包的分拆 要点 尽量使用ES2015,遵循CommonJs规范 切勿直接操作DOM,所以也应该避免使用jQuery库 data属性一定要是一个函数并且返回一个json对象