小编nni*_*mis的帖子

请求标头不是从Service Worker发送的

我正在尝试从服务工作者那里获取Web服务.此服务是使用基本Apache身份验证保护的JSP,因此我必须提供凭据以在请求标头中进行身份验证.以下请求在主窗口中工作正常:

self.addEventListener('push', function(event) {
  console.log('Received a push message', event);

  event.waitUntil(
    fetch(ONLINE_SITE_ENDPOINT, {
    method: 'GET',
    mode: 'cors',
    headers: {
        'Accept': 'application/json',
        'Authorization': 'Basic btoa(auth info)'
    }
    }).then(function(response) {
        //process response
    }).catch(function(err) {

    })
  );
});
Run Code Online (Sandbox Code Playgroud)

该代码进入一个event.waitUntil()范围,进入一个从'push'事件监听器调用的函数.但是,同样的确切调用失败了401(未授权).开发人员工具中的"网络"面板显示未发送标头:

OPTIONS /latest-new.jsp HTTP/1.1
Host: {an accessible host}
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://localhost
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36
Access-Control-Request-Headers: accept, authorization
Accept: */*
Referer: http://localhost/service-worker.js
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Run Code Online (Sandbox Code Playgroud)

这里有什么东西不见了吗?或者只是服务工作者无法实现?

一些额外的信息:只是不能使用XMLHttpRequest,因为它在服务工作者范围内是"未定义".检索JSON之前JSP上的标头:

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, …
Run Code Online (Sandbox Code Playgroud)

javascript html5 jsp service-worker

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

在C#.NET中为蓝牙创建虚拟COM端口

我有一个应用程序.通过蓝牙从设备接收一些传输.这个应用程序旨在托管在Win上.Server 2008或Win.7,在C#.NET 4.5上开发.通过使用设备SDK进行集成,因此我只需要知道从哪个COM端口接收数据.当我从蓝牙设置手动创建虚拟COM端口时,这不是问题.

虚拟COM端口 .

这种集成应该部署在很多设备中,要求用户手动创建虚拟COM端口不是一种选择......有没有办法从.NET代码创建它?我需要创建虚拟COM端口(监听蓝牙传输)并知道其端口名称.

编辑:我愿意接受新的方法(C++,power shell脚本,CMD,bat文件......总是在Windows技术中

我已经尝试过一些COM集成(就像这个),但它似乎仅限于.NetCF(我没有coredll.dll,因为它在Windows Server或Windows 7上运行,其他缺少的东西......已经试图'强迫'加载DLL而没有运气).类似但有效的东西将是理想的解决方案

.net c# windows serial-port bluetooth

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

Firebase - 不接收有效负载的notificationclick事件

我在这个问题上挣扎了一个多星期......我们已经使用Firebase和Service Worker在Chrome中实现了推送消息.一切正常,消息正在使用有效负载正确发送和接收.在服务工作者上,我们处理推送消息以显示通知和notificationclick事件,以便在单击时将用户发送到特定URL,然后关闭通知.

问题在于"旧"通知:如果用户收到消息但没有立即点击它,它会保留一段时间,然后在一段时间后(不确定多少)他点击通知 - 他被重定向到https:// [domain] /firebase-messaging-sw.js 我们已经跟踪了整个过程:收到的通知都包含了所有信息(网址也是正确的,实际上如果他在收到邮件时点击了它就可以了正好).但如果通知在那里存在一段时间就会被"清空".

发送的消息非常简单(仅用于显示没有TTL,也没有使用过期参数).curl命令看起来像这样:

curl -X POST 
    -H "Authorization: key=[SERVER API KEY]"
    -H "Content-Type: application/json"
    -d '{
    "notification":{
        "click_action":"[URL to be redirected]",
        "icon":"[A custom image]",
        "title":"[News title]"},
        "to":"/topics/[A topic]"
    }' 
"https://fcm.googleapis.com/fcm/send"
Run Code Online (Sandbox Code Playgroud)

这是用于处理服务工作者上的推送消息的代码:

self.addEventListener('push', function(event) {
    console.log('Push message received', event);
    var data = {};
    if (event.data) {
        data = event.data.json();
    }
    event.stopImmediatePropagation();
    showNotification(data.notification);
});

function showNotification(notification) {
    var click_action = notification.click_action; //<-- This is correct!
    var options = {
        body: notification.body,
        icon: notification.icon,
        subtitle: notification.subtitle, …
Run Code Online (Sandbox Code Playgroud)

push push-notification firebase service-worker

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