我正在使用JQuery 3.1.1版,我正在尝试在我的网页上实现内容安全策略指令.
我收到以下错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:"script-src'self''nonce-c20t41c7-73c6-4bf9-fde8-24a7b35t5f71'".要么是'unsafe-inline'关键字,哈希('sha256-KAcpKskREkEQf5B3mhDTonpPg34XnzaUC5IoBrOUrwY ='),要么是nonce('nonce -...')来启用内联执行.
该错误发生在主jquery.js脚本文件的第82行.这一行的内容是:
doc.head.appendChild( script ).parentNode.removeChild( script );
Run Code Online (Sandbox Code Playgroud)
基本上,它会向DOM添加内联脚本标记,这违反了CSP.
我不想用'unsafe-inline'.有没有其他方法来规避这个错误?
正如您在CSP违规中看到的那样,我正在使用CSP级别2(nonce),但它会被忽略.在附加脚本标记时,是否有可能(某些方式)通知jQuery使用此nonce?
更新:这是HTML的样子(使用Express模板作为nonce)
<script nonce="<%=nonce%>" type="text/javascript" src="jquery.js"></script>
Run Code Online (Sandbox Code Playgroud)
呈现HTML后,脚本标记上的nonce属性与服务器发送的CSP nonce指令匹配.
更新:它确实适用于普通的JavaScript
<script nonce="<%=nonce%>" type="text/javascript">
var userEmail = "<%=user.user.email%>";
</script>
Run Code Online (Sandbox Code Playgroud)
如果没有nonce属性,此脚本标记将违反CSP指令.
我在C中创建一个查找表当我定义它时:
typedef struct {
char* action;
char* message;
} lookuptab;
lookuptab tab[] = {
{"aa","bb"},
{"cc","dd"}
};
Run Code Online (Sandbox Code Playgroud)
它编译没有错误,但当我做这样的事情:
typedef struct {
char* action;
char* message[];
} lookuptab;
lookuptab tab[] = {
{"aaa", {"bbbb", "ccc"}},
{"cc", {"dd", "eeeee"}}
};
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误:在嵌套上下文中初始化灵活数组成员
错误:(接近初始化'tab [0] .message')
如何在第二个示例中初始化制表符数组?注意:我知道选项卡数组中的所有值.
更新:消息可以是不同的大小,例如
typedef struct {
char* action;
char* message[];
} lookuptab;
lookuptab tab[] = {
{"aaa", {"bbbb", "ccc", "dd"}},
{"cc", {"dd", "eeeee"}}
};
Run Code Online (Sandbox Code Playgroud)
非常感谢你.
最好的问候,维克多
我想在两个 Linux 进程之间共享一个 CvMat 对象(OpenCV 库中的矩阵),为此我使用共享内存。一个进程(服务器)将从网络摄像头捕获一帧(矩阵),将其转换为灰度,使用共享内存共享它并在屏幕上显示该帧。另一个进程(客户端)将读取共享帧并执行一些操作。请参阅下面的代码。
问题似乎是客户端没有读取信息,因为“行”和“列”为零(或者服务器没有写入共享内存)。无论如何,我没有收到任何错误消息,我不知道我做错了什么。任何想法?
非常感谢!
这是服务器的代码:
#include <iostream>
#include <cv.h>
#include <highgui.h>
using namespace std;
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include "2cam.h"
int sizeofmat(CvMat *mat) {
return mat->rows * mat->cols * CV_ELEM_SIZE(mat->type);
}
int main() {
int shmid;
key_t key = 5678;
CvMat *vdisp = cvCreateMat(240, 320, CV_8U);
const size_t vdispsize = sizeofmat(vdisp);
CvMat *s = cvCreateMat(240, 320, CV_8U);
CvMat stub;
CvSize imageSize = cvSize(320, 240);
IplImage *color = cvCreateImage(imageSize, 8, 3);
IplImage *gray …Run Code Online (Sandbox Code Playgroud)