小编sid*_*ker的帖子

如何允许通过 CORS 访问 nginx 中的多个域

如果您查看的是 website.com 而不是 www.website.com,我在将 SVG 加载到我的网站时遇到了一些问题。该网站在 nginx 服务器上,所以我添加了这个,它解决了这个问题:

location / {
  add_header Access-Control-Allow-Origin "*"; 
}
Run Code Online (Sandbox Code Playgroud)

但是,根据我所阅读的内容,这似乎会导致安全问题?有没有办法只指定 www.website.com 和 website.com 而不是 *?我问是因为我在 PHP 中遇到过这个,它似乎是我需要的,但对于 nginx:

header('Access-Control-Allow-Origin: http://www.website.com');
header('Access-Control-Allow-Origin: http://website.com');
Run Code Online (Sandbox Code Playgroud)

nginx cors

13
推荐指数
2
解决办法
2万
查看次数

松弛传入webhook:请求头字段预检响应中的Access-Control-Allow-Headers不允许Content-type

我尝试在浏览器中通过fetch API发布松弛消息:

fetch('https://hooks.slack.com/services/xxx/xxx/xx', {
  method: 'post',
  headers: {
    'Accept': 'application/json, text/plain, */*',
    'Content-type': 'application/json'
  },
  body: JSON.stringify({text: 'Hi there'})
})
  .then(response => console.log)
  .catch(error => console.error);
};
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Fetch API cannot load:
https://hooks.slack.com/services/xxxxxxx/xxxxx. 
Request header field Content-type is not allowed by Access-Control-Allow-Headers in preflight response.
Run Code Online (Sandbox Code Playgroud)

该怎么办?

javascript content-type cors slack fetch-api

13
推荐指数
2
解决办法
3213
查看次数

Laravel 9 - CORS 不起作用(对 XMLHttpRequest 的访问已被 CORS 策略阻止)

我正在尝试使用Vuejs构建一个独立的前端 Web 应用程序,并从我构建的Laravel 9 API中获取数据,当我尝试从前端访问数据(即浏览器控制台中的响应)时:

从源“http://127.0.0.1:8080”访问“http://localhost:8000/api”的 XMLHttpRequest 已被 CORS 策略阻止:“Access-Control-Allow-Origin”标头不存在请求的资源。

后端代码 (Laravel 9)

1-api.php 文件

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Models\User;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::get('/', function () {
    $users = User::all();
    return response()->json($users, 200);
});
Run Code Online (Sandbox Code Playgroud)

2- …

php laravel vue.js laravel-9

13
推荐指数
2
解决办法
3万
查看次数

为什么在 macOS M1 环境中 `std::invalid_argument` 没有被 no-rtti 捕获?

今天我在 C++ 中捕获异常时遇到了一个奇怪的行为,有人可以向我解释一下吗?代码片段

#include <iostream>
#include <string>
#include <exception>


int main() {
  try {
    std::stod("notanumber");
  } catch (const std::invalid_argument&) {
    std::cerr << "std::invalid_argument" << std::endl;
  } catch (const std::out_of_range&) {
    std::cerr << "std::out_of_range" << std::endl;
  } catch (const std::exception&) {
    std::cerr << "Caught by ancestor" << std::endl;
  } catch (...) {
    auto ptr = std::current_exception();
    auto type = __cxxabiv1::__cxa_current_exception_type();
    std::cerr << type->name() << std::endl;
    std::cerr << "..." << std::endl;
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

写入输出

St16invalid_argument
...
Run Code Online (Sandbox Code Playgroud)

环境详情

C++ 14, disabled …
Run Code Online (Sandbox Code Playgroud)

c++ macos std rtti c++14

13
推荐指数
0
解决办法
378
查看次数

如何一个接一个地播放<audio>块,没有弹出和点击?

我有两个这样的标签:

<audio id="1" src="lub0.mp4" />
<audio id="2" src="lub1.mp4" />
Run Code Online (Sandbox Code Playgroud)

我想逐个播放它们,即.play()第一个,当它启动第一个事件时,我将.play()第二个.不幸的是,这给了我一个流行音乐.没有点击,有没有正确的crossbrowser方式来做到这一点?

文件本身很好,如果我在ffmpeg中将它们粘在一起,声音是完美的.

感谢名单.

audio html5 ffmpeg html5-audio media-source

12
推荐指数
1
解决办法
430
查看次数

什么时候Firefox在POST请求中将Origin标头设置为null?

正如你可以看到从这个Bugzilla的线程(和也),Firefox不总是在POST请求发送Origin标.RFC规定不应在某些未定义的"隐私敏感"上下文中发送它.Mozilla 在这里定义了这些上下文.

我想知道的是,这些是Firefox不会发送Origin标头的唯一情况.据我所知它也不会发送它在跨源POST请求(虽然Chrome和IE将),但我无法在文档中确认.它是否在我遗漏的地方列举?

谢谢.

firefox http cross-domain cors fetch-api

12
推荐指数
2
解决办法
8102
查看次数

CORS 规则 nginx-ingress 规则

我需要允许来自多个来源的请求:http://localhost:4200,http://localhost:4242,等,nginx的上,入口版本1.7.1。但我无法为多个来源做到这一点,因为nginx.ingress.kubernetes.io/cors-allow-credentials: true不会与nginx.ingress.kubernetes.io/cors-allow-origin: "*". 它会导致浏览器生成 CORS 错误。也许有人有避免此错误的解决方案?

这是我的配置

 annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,X-LANG,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Api-Key,X-Device-Id,Access-Control-Allow-Origin"
Run Code Online (Sandbox Code Playgroud)

从源“ http://localhost:4200 ”访问“ https://stage.site.com/api/session ”的XMLHttpRequest已被 CORS 策略阻止:“Access-Control-Allow-Origin”的值当请求的凭据模式为“包含”时,响应中的标头不得为通配符“*”。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

cors kubernetes kubernetes-ingress

12
推荐指数
3
解决办法
2万
查看次数

可以使链接 rel=preload 与 fetch 一起使用吗?

我有一个很大的 JSON blob,我想预先加载我的网页。为此,我已添加<link rel="preload" as="fetch" href="/blob.json">到我的页面。我也有一个 JS 请求来获取相同的 blob。

这不起作用,控制台报告:

[警告] 资源 blob.json 是使用链接预加载预加载的,但在窗口加载事件的几秒钟内未使用。请确保它不是无故预加载的。

MDN 声称这可以通过添加crossorigin到链接标签来解决。AFAICT,这是不正确的,并且没有任何组合或跨域属性使其真正起作用。

使用来自开发者控制台的 copy-as-curl 命令,似乎没有链接标签和属性的组合,它们将发出与 JS 中的 fetch/XHR 调用相同的请求。

我很想在这件事上犯错。

fetch preload

12
推荐指数
1
解决办法
3079
查看次数

如何阻止CORB阻止对以CORS标头响应的数据资源的请求?

我正在开发一个Chrome扩展程序,该扩展程序可以将某些网站的请求发送到我控制的API。直到Chrome 73,该扩展程序才能正常工作。升级到Chrome 73之后,我开始出现以下错误:

跨域读取阻止(CORB)使用MIME类型application / json 阻止了跨源响应 http:// localhost:3000 / api / users / 1

根据Chrome关于CORB的文档,如果满足以下所有条件,则CORB将阻止请求的响应:

  1. 该资源是“数据资源”。具体来说,内容类型为HTML,XML,JSON

  2. 服务器以X-Content-Type-Options: nosniff标头作为响应,或者如果省略标头,则Chrome通过检查文件来检测内容类型是HTML,XML还是JSON之一

  3. CORS不允许显式访问资源

另外,根据“从幽灵和熔化的教训”(谷歌I / O 2018) ,现在看来似乎可能增加是重要的mode: cors,以fetch调用,即fetch(url, { mode: 'cors' })。

为了解决此问题,我进行了以下更改:

首先,我向API的所有响应添加了以下标头:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Origin: https://www.example.com
Run Code Online (Sandbox Code Playgroud)

其次,我fetch()将扩展名的调用更新为如下形式:

fetch(url, { credentials: 'include', mode: 'cors' })
Run Code Online (Sandbox Code Playgroud)

但是,这些更改不起作用。我该如何更改以使我的请求不会被CORB阻止?

google-chrome google-chrome-extension cors cross-origin-read-blocking

12
推荐指数
2
解决办法
2万
查看次数

尽管禁用了“实验性 Web 平台功能”,为什么 Chrome 仍发送 sec-ch-ua 和 sec-ch-ua-mobile 请求标头

我遇到了 Chrome 的情况,经过测试87.0.4280.88,在某些情况下 Chrome 会发送sec-ch-ua和sec-ch-ua-mobile请求标头,尽管chrome://flags/#enable-experimental-web-platform-features设置为“禁用”。

例如:

sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
sec-ch-ua-mobile: ?0
Run Code Online (Sandbox Code Playgroud)

发生这种情况时,摆脱这些标头的唯一方法是使用参数启动 Chrome --disable-features=UserAgentClientHint。

有人对此有解释吗?据我了解,这些功能仍处于实验阶段,规范正在进行中(https://wicg.github.io/ua-client-hints/)。

browser google-chrome http-headers client-hints

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