标签: cors

S3/Cloudfront CORS 仅适用于某些文件

我真的很难让 Cloudfront 和 S3 将 Access-Control-Allow-Origin: * 添加到存储在 S3 上的视频文件的标题中(对于 iPhone 上的内联视频 - 似乎在其他地方都可以工作,但是内联视频仅适用于来自同一域的 iPhone,因此假设它与 CORS 相关)。

只有存储桶中的第一个文件具有正确的标头

curl -I -H "Origin: https
://example.com" http://cdn.example.com/0000d723-5c73-4d71-953c-d7e29e70f17b.jpg
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Length: 80962
Connection: keep-alive
Date: Thu, 02 Jun 2016 00:38:50 GMT
Access-Control-Allow-Origin: https://beek.co
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
x-amz-meta-md5-hash: 18692618d1f6865694f08fb2dcd12201
Last-Modified: Wed, 15 Feb 2012 03:08:14 GMT
ETag: "18692618d1f6865694f08fb2dcd12201"
Accept-Ranges: bytes
Server: AmazonS3
Vary: Origin,Access-Control-Request-Headers,Access-Control-Request-Method
Age: 63
X-Cache: Hit from cloudfront
Via: 1.1 284d225e590e6583c457dc0182ee6fe7.cloudfront.net (CloudFront)
X-Amz-Cf-Id: n9NmaT8pwHg5BZmZqoPAxUlGBiLR7BqD5rxodzjfpKi2mFthhGzGyw==
Run Code Online (Sandbox Code Playgroud)

但其他人都没有

curl …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-cloudfront cors

6
推荐指数
1
解决办法
1926
查看次数

Nginx 添加标头和 proxy_pass 以绕过 CORS

我想在 proxy_pass 服务器上使用 API 创建 CORS 站点。但

location / {

     if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';

        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';

        add_header 'Access-Control-Max-Age' 86400;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204; break;
     }
     if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' '*';
        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';
     }
     if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy cors

6
推荐指数
1
解决办法
6万
查看次数

在 Tomcat 中禁用 OPTIONS 请求的 HTTP 身份验证

我有一个受 HTTP 基本身份验证保护的 API。

当我想针对 API 发出 AJAX 请求时,浏览器会发送一个不携带 Authorization 标头的 OPTIONS 请求,因此它会被拒绝,因此浏览器不允许我的 AJAX 调用。

我尝试将 Tomcat 配置为不验证 OPTIONS 请求,但未能使其正常工作。

如何在 Tomcat 中禁用 OPTIONS 请求的 HTTP 身份验证?

tomcat authentication ajax cors

5
推荐指数
1
解决办法
6961
查看次数

什么 AWS 服务可以避免 S3 静态内容和 aws 后端的 CORS 问题

介绍

我在 Amazon AWS 上部署了以下架构。

高层架构

目标是在https://app.acmecorp.com公开充当入口点的 Web 应用程序(单页应用程序)。这是一个单页应用程序:

  • 提供静态资源(html/js/css)
  • 需要通过 javascript 访问 REST 后端

后端

这个想法是将后端部署在弹性容器服务集群中(通过 docker)。然后将它们生成/自动扩展到由负载均衡器提供服务的目标组中。后端通过https://backend.acmecorp.com公开。(指向 AWS 负载均衡器的 DNS CNAME)

前端

单页应用程序部署在 Amazon S3 存储桶中,并通过 S3 静态站点托管公开。(http://frontend.s3-website-us-west-2.amazonaws.com)。这也可以通过http://frontend.acmecorp.com上的 DNS CNAME 公开

反向代理

我想要的是以下内容。用户通过https://app.acmecorp.com访问应用程序。这应该为静态内容提供服务。为避免 CORS 设置,我希望单页应用程序能够从该域调用 API 调用到/api,因此对https://app.acmecorp.com/api/ ** 的调用应映射到后端。

显然这可以用 Nginx 之类的东西来完成,但我想知道亚马逊是否为此提供了一些东西,以及需要什么样的构建块才能拥有此功能

reverse-proxy amazon-s3 amazon-web-services cors

5
推荐指数
1
解决办法
2878
查看次数

Nginx 中不可能有条件标头吗?

我目前正在尝试使用 Nginx 有条件地返回一组 CORS 标头。起初,这似乎是一个简单的任务,因为我已经有了这个工作配置:

upstream api-app {
  server unix:/tmp/api-app.sock fail_timeout=0;
}

server {
  listen 80;
  # [other server stuff...]

  # CORS headers added to all ALL responses of this server (needed for all requests)
  more_set_headers 'Access-Control-Allow-Methods: GET,POST,PATCH,PUT,DELETE,OPTIONS';
  more_set_headers 'Access-Control-Allow-Origin: *';
  more_set_headers 'Access-Control-Allow-Credentials: true';
  more_set_headers 'Access-Control-Request-Method: GET,POST,PATCH,PUT,DELETE,OPTIONS';
  more_set_headers 'Access-Control-Request-Headers: Content-Type';
  more_set_headers 'Access-Control-Allow-Headers: Origin,X-Requested-With,Content-Type,Accept,Session-Id,Role-Id,Visitor-Id,X-Window-Location';
  more_set_headers 'Access-Control-Expose-Headers: X-Total-Entries,X-Total-Pages,X-Page,X-Per-Page,X-Folder-Hierarchy';

  location / {
    # For OPTIONS request only return above headers and no content (also allow caching them)
    if ($request_method = 'OPTIONS') {
      # …
Run Code Online (Sandbox Code Playgroud)

nginx conditional cors

5
推荐指数
1
解决办法
2136
查看次数

nginx 访问控制源头已配置但不起作用

我得到一个

XMLHttpRequest cannot load http://website2.com/ads/dev_642e92efb79421734881b53e1e1b18b6/5534f8e14d514_1.html. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://website1.com' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

Website2 是使用 nginx 配置的:

server {
listen       80;
server_name  website2.com;
root  /var/www/website2;
index index.php index.html index.htm;
#try_files $uri $uri/ /index.php?$args;

client_max_body_size 20M;
location /ads {
    add_header 'Access-Control-Max-Age' 1728000;
    add_header 'Access-Control-Allow-Origin' '*';
    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';
  try_files $uri $uri/ /index.php?$args;
}
location / {
      try_files $uri $uri/ /index.php?$args;
     # proxy_pass http://127.0.0.1:2368/;
     # proxy_set_header …
Run Code Online (Sandbox Code Playgroud)

nginx cors

3
推荐指数
1
解决办法
4万
查看次数

无法在 ADFS 2019 上设置 CORSEnabled 和 CORSTrustedOrigins 属性

问题:

ADFS 2019 中有一些属性表明您可以为 ADFS 登录页面启用 CORS 标头并设置允许的来源。

Get-AdfsProperties

CORSEnabled                                : False
CORSTrustedOrigins                         : 
Run Code Online (Sandbox Code Playgroud)

但是相应的Set-AdfsProperties列表没有开关来实际设置这些属性。

那么问题来了。如何设法设置这些属性?

全面披露:

我设法通过 SSMS 连接到 WID 并转储包含ServiceSettings表中属性的 XML ,更改适当的属性,然后更新 WID 中的 XML,从而实际设置了这两个选项。

Get-AdfsProperties

CORSEnabled                                : True
CORSTrustedOrigins                         : {https://localhost:5001, https://localhost:8081}
Run Code Online (Sandbox Code Playgroud)

有用。这对于我的测试目的来说是可以的,但对于 CI/CD 环境来说绝对不行,我目前正在设置需要自动从CORSTrustedOrigins属性中添加和删​​除值的过程 。

附加信息:

这些属性是 ADFS 2019 中的新属性,ADFS 4.0 不支持 CORS,运行该属性的唯一方法是在其前面放置一个反向代理,以便在响应中放置正确的 CORS 标头。

我目前正在尝试该解决方案,但我也遇到了问题。但这对这个问题来说不算什么。

编辑1:

因此,因为我是一个好奇的开发人员,所以我开始在Microsoft.IdentityServer.Management包含Set-AdfsPropertiescmdlet的组件上使用 dotPeak ,我发现了一个有趣的发现。没有设置CORSEnabled和的实现,CORSTrustedOrigins似乎有方法可以将自定义标头添加到 cmdlet 中未实现的响应中。

所以基本上没有办法实际使用这些宣传的功能。除了进入数据库直接更改XML。这在我看来有点疏忽。

adfs cors windows-server-2019

3
推荐指数
1
解决办法
2433
查看次数

多个 CORS 来源。我应该使用 if 语句吗?- NginX

我已经设置了一个 NginX,以便从实例中提供一些静态文件。

静态文件将由我拥有的 3 个不同域使用。

NginX 服务器位于其自己的(第 4 个)域中。我想限制对我的文件的访问并应用 CORS 策略。

我已经研究过如何实现这一点,并且我确实做到了。在我的位置块中,我测试了以下代码:

if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' 'http://localhost:3000';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        #
        # Custom headers and headers various browsers *should* be OK with but aren't
        #
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        #
        # Tell client that this pre-flight info is valid for 20 days
        #
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain; charset=utf-8';
        add_header 'Content-Length' 0;
        return 204;
    }
    if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' 'http://localhost:3000';
        add_header 'Access-Control-Allow-Methods' …
Run Code Online (Sandbox Code Playgroud)

nginx cors

0
推荐指数
1
解决办法
5006
查看次数