全球主机交流论坛

标题: docker,CORS跨域请求的问题 [打印本页]

作者: igoogle    时间: 2022-9-14 10:54
标题: docker,CORS跨域请求的问题
用docker部署了一个github上的项目,python写的,

在自己另外一个网站嵌套访问这个docker项目的时候,一直提示CORS错误。。

在宿主机nginx配置了CORS,但是docker上的项目肯定是不起作用的。

docker中容器中又没有找到nginx配置。。

大佬们,这个到底要咋配置?
作者: 傍晚升起的太阳    时间: 2022-9-14 10:58
宿主机nginx反代一下就完事了
作者: vavn    时间: 2022-9-14 10:59
http://t.zoukankan.com/pyse-p-13533568.html。参考一下
作者: igoogle    时间: 2022-9-14 11:03
傍晚升起的太阳 发表于 2022-9-14 10:58
宿主机nginx反代一下就完事了

我反代了,不起作用的。。
作者: igoogle    时间: 2022-9-14 11:06
vavn 发表于 2022-9-14 10:59
http://t.zoukankan.com/pyse-p-13533568.html。参考一下

他这个讲的是docker项目是nginx,
我这个是python的,而且根本就没有nginx.conf配置文件啊
作者: geekjam    时间: 2022-9-14 11:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: igoogle    时间: 2022-9-14 11:38
geekjam 发表于 2022-9-14 11:21
入口什么配置就什么配置,你管docker里的干啥,直接宿主机配好nginx,反代下即可 ...

我开始就是这么干的啊,但是宿主机配置了还是提示cors问题

难道是我姿势不对吗
作者: igoogle    时间: 2022-9-14 13:42
geekjam 发表于 2022-9-14 11:21
入口什么配置就什么配置,你管docker里的干啥,直接宿主机配好nginx,反代下即可 ...

不行啊大佬,反代出来,也配置了nginx,没起作用啊。。
作者: geekjam    时间: 2022-9-14 14:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: igoogle    时间: 2022-9-14 15:26
geekjam 发表于 2022-9-14 14:47
肯定就配的方法方式不对,先随便加个http头看能不能加成功,http头都能加成功cors更不用说 ...

大佬帮我看下,nginx反代docker,配置cors

我的配置这样的:


  1. #PROXY-START/

  2. location ^~ /
  3. {
  4.     proxy_pass http://172.17.0.2:8080;
  5.     proxy_set_header Host $host;
  6.     proxy_set_header X-Real-IP $remote_addr;
  7.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8.     proxy_set_header REMOTE-HOST $remote_addr;
  9. add_header Access-Control-Allow-Origin *;
  10. add_header 'Access-Control-Allow-Credentials' 'true';
  11. add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With';
  12. add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';

  13.     #Persistent connection related configuration

  14.     add_header X-Cache $upstream_cache_status;

  15.     #Set Nginx Cache
  16.    
  17.    
  18.     set $static_file8y2m6bpV 0;
  19.     if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
  20.     {
  21.             set $static_file8y2m6bpV 1;
  22.             expires 12h;
  23.         }
  24.     if ( $static_file8y2m6bpV = 0 )
  25.     {
  26.     add_header Cache-Control no-cache;
  27.     }
  28. }

  29. #PROXY-END/
复制代码


问题出在哪儿啊
作者: geekjam    时间: 2022-9-14 15:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: igoogle    时间: 2022-9-14 15:43
geekjam 发表于 2022-9-14 15:33
说了,最简单的先加个http试试,看到底返不返回Http头,http头都不返回还折腾啥,肯定就错了 ...

你说的加http啥意思?直接打开反代站点看返回头吗?

我直接访问,响应头为:

Cache-Control: no-cache
Connection: keep-alive
Content-Length: 12
Date: Wed, 14 Sep 2022 07:40:48 GMT
Keep-Alive: timeout=4
Proxy-Connection: keep-alive
Server: nginx

说明cors根本没起作用。。
所以我才像是不是要在docker里面配置
作者: igoogle    时间: 2022-9-14 16:01
geekjam 发表于 2022-9-14 15:33
说了,最简单的先加个http试试,看到底返不返回Http头,http头都不返回还折腾啥,肯定就错了 ...

大佬我明白你的意思了,

不反代的话,访问站点,返回头cors配置没问题,
但是一反代,再访问站点,返回头就没了cors配置

这是怎么回事啊。。
作者: 不眠飞行    时间: 2022-9-14 16:02
python 里面加 或者 nginx里加,
作者: 傍晚升起的太阳    时间: 2022-9-14 16:19
igoogle 发表于 2022-9-14 16:01
大佬我明白你的意思了,

不反代的话,访问站点,返回头cors配置没问题,

很简单,加header头的时候追加always
作者: 傍晚升起的太阳    时间: 2022-9-14 16:22
igoogle 发表于 2022-9-14 16:01
大佬我明白你的意思了,

不反代的话,访问站点,返回头cors配置没问题,

直接看这里
  1. server {
  2.     listen 80;
  3.     listen 443 ssl http2;
  4.     server_name api.nikm.cn menu.nikm.cn;

  5.     if ($server_port !~ 443){
  6.         rewrite ^(/.*)$ https://$host$1 permanent;
  7.     }

  8.     ssl_certificate    /ssl/pem.txt;
  9.     ssl_certificate_key    /ssl/key.txt;
  10.     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  11.     ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  12.     ssl_prefer_server_ciphers on;
  13.     ssl_session_cache shared:SSL:10m;
  14.     ssl_session_timeout 10m;
  15.     add_header Strict-Transport-Security "max-age=31536000";
  16.     error_page 497  https://$host$request_uri;

  17.     location / {
  18.         proxy_pass http://my-admin-new.my:18081;
  19.         proxy_http_version 1.1;
  20.         proxy_set_header Host $host;
  21.         proxy_set_header X-Real-IP $remote_addr;
  22.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  23.         proxy_set_header Cookie $http_cookie;
  24.         proxy_set_header Upgrade $http_upgrade;
  25.         proxy_set_header Connection "upgrade";
  26.     }

  27.     if ($request_method = "OPTIONS") {
  28.         return 204;
  29.     }
  30.     add_header Access-Control-Allow-Origin * always;
  31.     add_header Access-Control-Allow-Headers * always;
  32.     add_header Access-Control-Allow-Methods * always;

  33.     access_log  /var/log/nginx/api.nikm.cn.log;
  34.     error_log  /var/log/nginx/api.nikm.cn.error.log;
  35. }
复制代码


其实就一个always
作者: igoogle    时间: 2022-9-14 18:02
傍晚升起的太阳 发表于 2022-9-14 16:22
直接看这里

感谢大佬,我搞定了。。




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4