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

为VueJS devserver启用CORS

蔚学林
2023-03-14

我的设置如下所示:

  • 将自定义TLD指向本地主机的自定义DNS服务器

我想要的是我的api和前端都在子域上。tld,其中/api反向代理到我的api和其他所有要转到vuejs开发服务器的内容。

我当前的nginx配置符合我的需要,但它阻止vue devserver连接:

server {
        listen      80;
        server_name sub.domain.tld;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        server_name sub.domain.tld;

        ssl_certificate /opt/ssl/domain.tld.pem;
        ssl_certificate_key /opt/ssl/domain.tld-key.pem;

        include snippets/ssl.conf;

        access_log /tmp/nginx.log combined;

        add_header 'Access-Control-Allow-Origin' "*" always;
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,X-Refresh-Token';

        location /auth {
                if ($request_method = OPTIONS ) {
                        add_header "Access-Control-Allow-Origin"  "*" always;
                        add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
                        add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept, X-Refresh-Token";
                        return 200;
                }

                proxy_pass http://localhost:2394;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
        }

        location / {
                if ($request_method = OPTIONS ) {
                        add_header "Access-Control-Allow-Origin"  "*" always;
                        add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
                        add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept, X-Refresh-Token";
                        return 200;
                }

                proxy_pass http://localhost:8935;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

vue.config.js:

module.exports = {
        devServer: {
                disableHostCheck: true,
                proxy: 'https://sub.domain.tld/'
        }
}

唯一的问题是,我仍然得到错误,我猜实时错误显示/实时刷新包括在vue-cli(法语对不起,但它基本上是一个CORS错误消息):

Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://192.168.1.12:8935/sockjs-node/info?t=1609950092054. Raison : échec de la requête CORS.

共有1个答案

孙夕
2023-03-14

所以最后我得到了它的工作与以下设置:

我让vue-cli/webpack知道我的浏览器将从给定的网址访问:

vue.config.js

module.exports = {
  publicPath: '/app/', // Only required if the app is not at the root
  devServer: {
    "public": "sub.domain.tld"
  }
}

那么这只是一个正确配置nginx的例子。在这种情况下不需要CORS,因为所有内容都是从同一个域提供的。

server {
        listen      80;
        server_name sub.domain.tld;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        server_name sub.domain.tld;

        ssl_certificate /opt/ssl/domain.tld.pem;
        ssl_certificate_key /opt/ssl/domain.tld-key.pem;

        include snippets/ssl.conf;

        access_log /tmp/nginx.log combined;

        # My golang backend
        location / {
            proxy_pass http://localhost:1635;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
        }

        # My VueJS app
        location /app {
            proxy_pass http://localhost:8080;
        }

        # Access for webpack WS for debug
        location /sockjs-node {
            proxy_pass http://localhost:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
        }

        # Since I'm building my app on a sub-path I want the root to redirect to it
        location = / {
            return 301 $scheme://$host/app;
        }
}
 类似资料:
  • 我是这样做的: 我做错了什么?我将非常感谢任何帮助。 更新: 道格·史蒂文森的回答有所帮助。添加({origin:true})修复了此问题,我还不得不将更改为,但我一开始完全没有看到。

  • 问题内容: 我已经安装并正在运行PHP(版本:5.3.17),并且我想切换到mysqlnd(在phpinfo中,mysqlnd根本不存在)。 我读过为了进行设置,您需要更新命令: 当我尝试安装它时,出现错误: 问题答案: 该命令是源代码编译过程的一部分。 您可以从源代码进行编译,也可以通过软件包管理器进行安装。我想在您的情况下,包管理器更可取。 正如程序包管理器抱怨的那样,您不能同时安装和安装。

  • 问题内容: 我正在尝试在Ubuntu中为PHP安装sqlite3。 我安装并编辑为包含sqlite3扩展。 当我跑步时我得到 如上所示,已启用。但是,当我使用时,出现“找不到类SQLite3” 问题答案: 尝试: 那对我有用。

  • 我正在使用带有Spark 2.0.0的“预览”Google DataProc Image 1.1。要完成我的一个操作,我必须完成一个笛卡尔乘积。从版本 2.0.0 开始,创建了一个禁止笛卡尔产品的 Spark 配置参数 (spark.sql.cross Join.enabled) 并抛出异常。如何设置 spark.sql.crossJoin.enabled=true,最好使用初始化操作?

  • 我在独立配置中使用Keycloak-8.0.1。我正在尝试为运行在我的测试机器(A.B.C.D)上的Keycloak服务器启用SSL/HTTPS,将从机器(X.Y.Z.P)请求令牌请求。 (生成的令牌会有任何CORS/CSRF问题吗?看起来是的?SSL上的Keycloak会帮助解决这个问题吗?)不过,我需要启用SSL。 于是就开始了https://www.keycloak.org/docs/lat

  • 我使用的是Couchbase SDK和Spring boot 2.6.x版本。我使用的是spring spring-data-couch base:jar:4 . 4 . 0,它又有com . couch base . client:Java-client:jar:3 . 3 . 0依赖项。问题是,当尝试执行cluster.query()方法时,我需要查看正在执行什么查询。我需要启用调试日志。然而