小编sid*_*ker的帖子

Fetch API会泄漏Chrome中的内存

以最简单的方式使用fetch-API时,Chrome无法正确收集垃圾.难道我做错了什么?

for (i = 0; i < 100; i++) {
  fetch('https://upload.wikimedia.org/wikipedia/commons/3/3d/LARGE_elevation.jpg')
    .then(response => {
      console.log('Memory-bloating')
    })
}
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/dozrpcvj/12/

这个JSFiddle用1.4GB填充内存,直到手动垃圾收集或关闭选项卡才会释放.如果你将迭代次数增加到1000,它"下载"14GB(来自自己的磁盘)而不是垃圾收集,它开始填充磁盘上的交换文件.

我做错了什么或这是Chrome中的错误?在使用Safari进行测试时,它还会使用1.4GB的硬盘驱动器,但一旦完成就会开始进行垃圾回收.

PS.您不能使用内存分析器,因为它告诉您只使用几MB的数据,即使活动监视器或Chromes自己的任务管理器说1.4GB.

javascript memory-leaks google-chrome fetch fetch-api

8
推荐指数
1
解决办法
406
查看次数

来自CORS预检通道的CORS标头“ Access-Control-Allow-Headers”中缺少令牌

后端退货

Access-Control-Allow-Headers: *
Run Code Online (Sandbox Code Playgroud)

我有一个要求

fetch('url-here', {
    // ...
    headers: {
        'X-Auth': token,
    }
})
Run Code Online (Sandbox Code Playgroud)

它可以在Chrome中使用,但对于Firefox,

跨域请求被阻止:同源策略禁止在<... cut ...>处读取远程资源。(原因:CORS预检通道的CORS标头“ Access-Control-Allow-Headers”中缺少令牌“ X-Auth”)。 ..cut ...>。(原因:CORS请求未成功)

javascript cors

8
推荐指数
1
解决办法
2724
查看次数

类型“EventTarget”上不存在属性“selectionStart”

我正在使用selectionStartandselectionEnd来获取文本选择的起点和终点。

代码: https: //codesandbox.io/s/busy-gareth-mr04o

然而,我正在努力定义可以调用它们的事件类型。如果我使用any,代码可以正常工作,但我更想知道正确的事件。

我尝试过这些类型: Element React.SyntheticEvent<HTMLDivElement> <HTMLDivElement> 没有运气

export default function App() {
  const [startText, setStartText] = useState<number | undefined>();
  const [endText, setEndText] = useState<number | undefined>();

  const handleOnSelect = (event: any) => { <--- I CANNOT FIND THE RIGHT EVENT TYPE
    setStartText(event.target.selectionStart);
    setEndText(event.target.selectionEnd);
  };

  return (
    <Grid container direction="column" className="App">
      You can type here below:
      <TextField
        value={"This is a example, select a word from this string"}
        onSelect={(event) => handleOnSelect(event)}
      />
      <br …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs material-ui selection-api

8
推荐指数
1
解决办法
7791
查看次数

如何修复 Vue3 客户端版本的“unsafe-eval”错误?

我在我的应用程序中使用 Express、cors 和头盔。Vue3仅在客户端使用,库文件自托管在public文件夹中。我只是做

<script type="module" src="/public/lib/vue.esm-browser.js"></script>
Run Code Online (Sandbox Code Playgroud)

将模块添加到客户端。问题是,当我使用它时,它总是给我一个Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'". 这个问题是昨天突然开始的,当我开始使用头盔和cors模块时,即使我注释掉这些模块,它仍然显示错误。我应该解决什么问题?

javascript express content-security-policy vuejs3

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

对TypeScript模块感到困惑

我是TypeScript的新手,但在C#中有一个背景,我对如何处理TypeScript模块有点困惑.我一直在考虑将模块作为C#中的命名空间,但这可能是错误的,因为我的代码行为不像我期望的那样.

我有以下文件夹结构:

|-myApp
|  |-myController
|  |      |-myController.ts
|  |-models
       |-a.ts
       |-b.ts
Run Code Online (Sandbox Code Playgroud)

而这段代码:

// a.ts
module MyApp.Models {
    export class A {

    }
}
// b.ts
module MyApp.Models {
    export class B {

    }
}

// myController.ts (THIS DOESN'T WORK)
module MyApp.MyController {
    import Models = MyApp.Models;
    class MyController {
        a = new Models.A();
        b = new Models.B();
    }
}

// myController.ts (THIS WORKS)
module MyApp.MyController {
    class MyController {
        a = new Models.A();
        b = new Models.B();
    }
} …
Run Code Online (Sandbox Code Playgroud)

import namespaces module typescript

7
推荐指数
1
解决办法
1218
查看次数

Spring @CrossOrigin 不适用于 DELETE 方法

Spring @CrossOrigin 注释不适用于 DELETE 方法。

示例代码(在 Groovy 中):

@CrossOrigin
@RestController
@RequestMapping('/rest')
class SpringController {

    @RequestMapping(value = '/{fileName}', RequestMethod.DELETE)
    void deleteFile(@PathVariable fileName) {
        // logic
    }

}
Run Code Online (Sandbox Code Playgroud)

对于这段代码,我得到了异常:

XMLHttpRequest 无法加载http://localhost:8080/rest/filename.txt。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问Origin ' http://localhost:4200 '。响应具有 HTTP 状态代码 404。

笔记:

  • 我在 Chrome 58 和 Postman 4.10.7 中测试过
  • 根据https://spring.io/guides/gs/rest-service-cors/默认情况下,@CrossOrigin 只允许 GET、HEAD 和 POST 跨域请求。虽然指定@CrossOrigin(methods = [RequestMethod.GET, RequestMethod.DELETE])没有帮助
  • 为简洁起见,我省略了一些代码。实际控制器也有相同映射的 GET 请求,delete 方法有返回类型并产生 JSON 响应,以及我认为不会影响问题的其他小东西。

spring spring-mvc cors http-delete

7
推荐指数
1
解决办法
2734
查看次数

内容安全策略“拒绝执行内联事件处理程序”错误

我试图通过设置 Content-Security-Policy 标头来减轻 XSS 攻击,但 Chrome 不断抛出错误:

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src 'self' 'nonce-Njg3MGUxNzkyMjViNDZkN2I3YTM3MDAzY2M0MjUxZGEzZmFhNDU0OGZjNDExMWU5OTVmMmMwMTg4OQ3ZmY.” 启用内联执行需要“unsafe-inline”关键字、散列(“sha256-...”)或随机数(“nonce-...”)。

我尝试设置 nonce,<script nonce="Njg3MGUxNzkyMjViNDZkN2I3YTM3MDAzY2M0MjUxZGEzZmFhNDU0OGZjNDExMWU5OTVmMmMwMTg4NTA3ZmY4OQ==" href="main.js"></script>但它不起作用。

这是我的Content-Security-Policy标题:

default-src 'none'; 
script-src 'self' 'nonce-NjJjN2E5YjA0ZDJhNDlhZjlhMDFmZjQzMjE4YzhmMTAzOWNjZjVjMGZjNDIxMWU5YWIyNGMwMTg4NTA3ZmY4OQ=='; 
connect-src 'self' https://vimeo.com; 
img-src 'self'; 
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; 
font-src 'self' https://fonts.gstatic.com; 
media-src 'self' http://player.vimeo.com; 
frame-src 'self' http://player.vimeo.com;
Run Code Online (Sandbox Code Playgroud)

我不喜欢设置script-srcas unsafe-inline,因为它使 Content-Security-Policy 无效

javascript http-headers content-security-policy

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

获取不发送 Cookie

当我在浏览器(尝试过 chrome、firefox 和 edge)的控制台(在开发人员工具中)中使用以下 js 片段时,在获取发送 cookie 时遇到问题:

fetch('http://127.0.0.1:3010/check', {
  credentials: 'include'
  method: 'GET'
})
  .then(res=>res.json())
  .then(jsonobj=>{console.log(jsonbj)});
Run Code Online (Sandbox Code Playgroud)

这是我处理 api 请求的快速代码:

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var cors = require('cors');

var app = express();
app.use(cors({
    credentials: true,
    origin: 'https://www.youtube.com'
));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());

app.get('/check', (req, res)=>{
  console.log(JSON.stringify(req.cookies));
  res.json({
    message: "COOL"
  });
});
Run Code Online (Sandbox Code Playgroud)

fetch 调用成功,消息 COOL 被记录到浏览器控制台。但是,NodeJS 控制台会打印空对象 {} 或空 cookie。

例如,当我在http://youtube.com/的控制台中运行获取请求时,我希望浏览器将本地主机上的 cookie 发送到我的快速服务器(我这样做是为了模拟跨站点请求中的 cookie 发送) )。

编辑 1:我的本地主机上的一些 …

javascript cookies cross-domain node.js

7
推荐指数
1
解决办法
1759
查看次数

CORS – 跨源请求被阻止 – “Access-Control-Allow-Origin”标头包含无效值

我遇到了 CORS 问题,但似乎无法解决。

我的设置:

  • 网络A上的路由器/热点
  • 网络B上的 Web 服务器

我想做的是......用户将他的电子邮件输入到Hotspot入口页面,当他单击提交时,电子邮件被发送到网络服务器(当前使用XAMPP),这就是CORS问题发生的地方。

跨源请求被阻止:同源策略不允许读取http://myIpAddress:8080/DBinsert.php处的远程资源。(原因:CORS 标头“Access-Control-Allow-Origin”丢失。

以前我已经header('Access-Control-Allow-Origin: *');设置过并且没有 CORS 问题......

我尝试将此代码添加到我的 php 的最开头,但它仍然不起作用......

header('Access-Control-Allow-Origin: http://10.5.50.*');

我也尝试过

header('Access-Control-Allow-Origin: http://10.5.50.*:8080');

但它不起作用...

计算机IP是10.5.50.3

欢迎任何帮助和解释。

谢谢。

javascript cors

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

如何在 Blazor Web assembly 中使用“Sec-Fetch-Mode: no-cors”进行 http 请求

如何在 Blazor Web assembly 中通过 HttpClient 使用 HTTP 请求标头Sec-Fetch-Mode: no-cors发出请求?

我的实际代码是:

var hc = new HttpClient();
var responseHTTP = await hc.GetAsync("https://www.somedomain.com/api/");
Run Code Online (Sandbox Code Playgroud)

但这会产生以下 HTTP 请求标头:

:authority: www.somedomain.com
:method: GET
:path: /api/json?input=test&key=AIzaSyDqWvsxxxxxxxxxxxxxxxxx1R7x2qoSkc&sessiontoken=136db14b-88bd-4730-a0b2-9b6c1861d9c7
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
origin: http://localhost:5000
referer: http://localhost:5000/places
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
x-client-data: CJS2yQxxxxxxxxxxxxxxxxxxxxxxxxygEI7bXKAQiOusoBCObGygE=

Run Code Online (Sandbox Code Playgroud)

blazor-client-side sec-fetch-mode

7
推荐指数
1
解决办法
8118
查看次数