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

nginx - caddy 跨域的问题 CORS 错误?

柳经纶
2024-03-01

这个是我的caddyfile 配置文件

xxxx.com {    encode zstd gzip    file_server browse {        root /srv/xxxx.com    }}

我的站点有一些js css
我直接引入这些js css 提示我CORS 错误
我在网上了找了一些配置 发现都不对

如:

xxx {    encode zstd gzip    header{        Access-Control-Allow-Origin "{http.request.header.Origin}"        Access-Control-Allow-Credentials true        Access-Control-Allow-Methods *        Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization    }    file_server browse {        root /srv/xxx    }}

如:

xxxx {    encode zstd gzip    cors    file_server browse {        root /srv/xxx    }}

这些都是不对的!

请问如何配置?

共有1个答案

茅炯
2024-03-01

你的问题涉及到CORS(跨源资源共享)错误,这是由于浏览器的同源策略导致的。当浏览器尝试从一个源(域名、协议、端口)获取资源时,如果这些资源被其他源所限制,就会发生CORS错误。

对于Caddy服务器,你可以通过在Caddyfile中添加cors指令来启用CORS。然而,仅仅启用CORS可能不足以解决你的问题,因为你需要更精细地控制哪些源被允许访问。

以下是一个可能的解决方案:

xxxx.com {    encode zstd gzip    cors {        allowed_origins [ "http://example.com" "http://sub.example.com" ]        allowed_methods [ "GET" "POST" ]        allowed_headers [ "Authorization" "Content-Type" ]        max_age 3600    }    file_server browse {        root /srv/xxxx.com    }}

在上面的配置中:

  • allowed_origins 允许你指定哪些源可以访问你的资源。你可以列出多个源,用空格分隔。如果你想允许所有源访问,可以使用 *
  • allowed_methods 允许你指定哪些HTTP方法被允许。例如,你可能只想允许GET和POST请求。
  • allowed_headers 允许你指定哪些HTTP头被允许。如果你不指定任何头,浏览器将默认允许所有的头。
  • max_age 指定了CORS响应的有效期,以秒为单位。在这个例子中,它被设置为3600秒(1小时)。

请注意,你需要根据你的实际需求调整这些设置。如果你想允许所有源、方法和头,你可以使用 *。但是,请注意,这可能会带来安全风险,因为它允许任何源进行任何类型的请求。因此,最好根据你的应用程序的需要来设置这些参数。

 类似资料:
  • 下面的问题怎么解决?

  • cors套件 https://github.com/evert0n/koa-cors https://github.com/expressjs/cors 使用nginx nginx 前端:moa-frontend public下面的采用nginx做反向代理 其他的采用express+jade精简代码(ajax与后端交互) 后端 server { listen 8

  • 平时被问到最多的问题还是关于跨域的,其实跨域问题真的不是一个很难解决的问题。这里我来简单总结一下我推荐的几种跨域解决方案。 我最推荐的也是我工作中在使用的方式就是: cors 全称为 Cross Origin Resource Sharing(跨域资源共享)。这种方案对于前端来说没有什么工作量,和正常发送请求写法上没有任何区别,工作量基本都在后端这里。每一次请求,浏览器必须先以 OPTIONS 请

  • 我们在部署之后, 会发现Vuejs会遇到js 的经典问题: 远程服务器地址不对,或者跨域问题. 前提: 我们的真正后台接口是: http://siwei.me/interface/blogs/all 如下: 域名404 问题 这个问题看起来如下: 这个问题是由于源代码中,访问 /interface/blogs/all 这个接口引起的: this.$http.get('/api/interface/

  • 问题内容: 我正在尝试访问另一个域中的Web服务,但它不返回任何内容。后来我发现这是一个跨域访问的问题。 我在网上搜索了很多文章,但像我这样的新手都看不懂。:( 有人可以帮助我如何访问Web服务吗? 以下是我的代码。 问题答案: 浏览器不允许跨域AJAX调用。仅允许跨域JSONP请求。 要使用JSONP请求,您必须将属性更改为。但是,这意味着您不能请求XML,而只能请求JSONP。 关于JSONP

  • 我有以下功能可以将图片的较小版本合并到图片本身的较大版本: 然而,我得到了以下错误: CORS策略阻止了从源“http://localhost:53594”访问“http://xxxxxxx.com/testpicture.jpg”上的映像:请求的资源上没有“access-control-allow-origin”标头。 我使用了“匿名”交叉起源声明,应该可以解决这个问题,但它似乎没有造成任何影响