我正在运行一个 iOS 一次性密码 (OTP) 应用程序和一个相应的 MacOS 配套应用程序。在 iOS 应用程序中,用户可以点击一次性密码,从而导致 iOS 应用程序向我的服务器发送 HTTP 请求。我的服务器反过来会向 MacOS 应用程序发送一条推送通知,其中包含所点击的一次性密码。当然全部都是加密的,但这与问题无关。
iOS application -> HTTP request -> My server -> APS -> MacOS application
Run Code Online (Sandbox Code Playgroud)
最近,在用户开始升级到 MacOS Ventura 后,MacOS 应用程序停止接收通知。我可以看到(并且我已经验证)从 iOS 应用程序到服务器、再到 APS 的过程是有效的。APS 返回200 OK
成功状态,表明推送通知已发送到 MacOS 设备。
但是,在我的 MacOS 应用程序中,函数中未收到通知didReceiveRemoteNotification
(我将其包含在下面)。
/// Sent to the delegate when a running application receives a remote notification.
///
/// - Parameter application: The application that received the remote notification.
/// - Parameter userInfo: A dictionary that …
Run Code Online (Sandbox Code Playgroud) CSS属性名称中使用的术语'text'和'font'有什么区别?它们是相同的意思,还是以CSS开头的一个属性名称font-
和一个以text-
?开头的语言之间存在语义差异?
例如,为什么我们有这些CSS属性:
font-size: 34px;
text-decoration: underline;
Run Code Online (Sandbox Code Playgroud)
而不是像这样命名?
font-size: 34px;
font-decoration: underline;
Run Code Online (Sandbox Code Playgroud)
或者像这样?
text-size: 34px;
text-decoration: underline;
Run Code Online (Sandbox Code Playgroud)
是否有方式的语义差别font-
和text-
正在这里使用的,或者是前缀的选择完全是任意的?
我正在从Node.JS中的Google Gmail API中检索邮件,但我无法生成或检索到电子邮件的直接链接.
目前,我使用以下代码:
var link = 'https://mail.google.com/mail/u/0/#inbox/' + messageContent.threadId;
但正如你所看到的,它总是导航到用户的主要收件箱(/u/0/
).我尝试链接的电子邮件位于我的第二个和第三个收件箱中.
我尝试使用get message调用获取电子邮件的收件箱号码,但不幸的是它没有返回该数据.
我也尝试了下面这段代码,但它也没有用.它只是加载我的主要收件箱.
var link = 'https://mail.google.com/mail/#inbox/' + messageContent.threadId;
有人知道如何生成电子邮件的正确和直接链接吗?
提前致谢.
测试用例
首先,登录Google中的两个或多个帐户.如下图所示,我登录了3个帐户.第一个(在顶部)是我的主要帐户.其他的是二级账户.
与我的主Gmail的直接链接是:https://mail.google.com/mail / u/0 / #inmpbox /
与我的第二个帐户的直接链接是:https: //mail.google.com/mail / u/1 / #inmpbox /
我的第三个帐户和最后一个帐户的链接是:https: //mail.google.com/mail / u/2 / #inmpbox/
这些数字取决于您登录帐户的顺序.您登录的第一个帐户将始终是您的主帐户.
所以我们以2527bfcqed7d54c1
消息ID为例.唯一剩下的就是生成与消息的直接链接,但问题是,我们只知道它链接到的电子邮件,而不是收件箱的数量(例如/u/2
).
因此,如果邮件存在于收件箱中,/u/2
我们无法获得直接链接.由于API未返回收件箱编号,https://mail.google.com/mail/#inbox/2527bfcqed7d54c1
因此始终会重定向到主收件箱/u/0
.
我正在使用Python构建一个应用程序,用于检查某个Web应用程序是否容易受到AngularJS Sandbox Escape/Bypass的影响.
下面是它的工作原理.
我的应用程序http://localhost
使用以下内容启动本地Web服务器().
<!DOCTYPE html>
<html>
<head>
<script src="https://code.angularjs.org/1.2.19/angular.min.js"></script>
</head>
<body ng-app="">
{{c=toString.constructor;p=c.prototype;p.toString=p.call;["a","open(1)"].sort(c)}}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我正在使用的Sandbox Escape有效负载{{c=toString.constructor;p=c.prototype;p.toString=p.call;["a","open(1)"].sort(c)}}
,应该打开一个新窗口open(1)
.
启动Web服务器后,它使用Selenium(使用PhantomJS作为驱动程序)来检查是否由于AngularJS Sandbox Escape而打开了一个新窗口.
capabilities = dict(DesiredCapabilities.PHANTOMJS)
capabilities["phantomjs.page.settings.XSSAuditingEnabled"] = False
browser = webdriver.PhantomJS(
executable_path="../phantomjs/win-2.1.1",
desired_capabilities=capabilities,
)
browser.get("http://localhost/")
return len(browser.window_handles) >= 2
Run Code Online (Sandbox Code Playgroud)
我面临的问题
PhantomJS无法打开新窗口.当我导航到http://localhost
使用谷歌浏览器时,它会打开一个新窗口.
这是PhantomJS控制台日志(包含两个错误):
[
{
"level":"WARNING",
"message":"Error: [$interpolate:interr] http://errors.angularjs.org/1.2.19/$interpolate/interr?p0=%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7Bc%3DtoString.constructor%3Bp%3Dc.prototype%3Bp.toString%3Dp.call%3B%5B'a'%2C'open(1)'%5D.sort(c)%7D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&p1=SyntaxError%3A%20Expected%20token%20')'\n (anonymous function) (https://code.angularjs.org/1.2.19/angular.min.js:92)",
"timestamp":1501431637142
},
{
"level":"WARNING",
"message":"Error: [$interpolate:interr] http://errors.angularjs.org/1.2.19/$interpolate/interr?p0=%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7Bc%3DtoString.constructor%3Bp%3Dc.prototype%3Bp.toString%3Dp.call%3B%5B'a'%2C'open(1)'%5D.sort(c)%7D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&p1=Error%3A%20%5B%24parse%3Aisecfn%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.19%2F%24parse%2Fisecfn%3Fp0%3Dc%253DtoString.constructor%253Bp%253Dc.prototype%253Bp.toString%253Dp.call%253B%255B'a'%252C'open(1)'%255D.sort(c)\n (anonymous function) (https://code.angularjs.org/1.2.19/angular.min.js:92)",
"timestamp":1501431637142
}
]
Run Code Online (Sandbox Code Playgroud)
这是Google Chrome控制台日志(抛出错误但会打开一个新窗口):
Error: [$interpolate:interr] http://errors.angularjs.org/1.2.19/$interpolate/interr?p0=%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%7Bc%3DtoString.constructor%3Bp%3Dc.prototype%3Bp.toString%3Dp.call%3B%5B'a'%2C'open(1)'%5D.sort(c)%7D%7D%20%20%20%20%20%20%20%20%20%20%20%20%0A%0A&p1=Error%3A%20%5B%24parse%3Aisecfn%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.19%2F%24parse%2Fisecfn%3Fp0%3Dc%253DtoString.constructor%253Bp%253Dc.prototype%253Bp.toString%253Dp.call%253B%255B'a'%252C'open(1)'%255D.sort(c)
at …
Run Code Online (Sandbox Code Playgroud) 我正在开发Phalcon PHP(版本1.3.4)的CRUD系统.
我的目标是创建一个链接(删除行),要求确认点击(JavaScript确认框),然后进入(请求类型POST)链接.
因此,假设用户点击"删除行"按钮.
我知道CakePHP有一个函数(FormHelper :: postLink())就是这样做的.
我想知道Phalcon PHP是否也有这样的功能.
我刚从这个链接下载文件,解压缩并尝试执行但是我遇到了这个错误:
Fatal error: Class 'Locale' not found in D:\xampp\htdocs\cake-3-beta-2\vendor\cakephp\cakephp\src\I18n\I18n.php on line 229
Run Code Online (Sandbox Code Playgroud)
我正在运行带有xampp的localhost ...我对beta 1和2有同样的问题.
我正在构建一个聊天应用程序,我有一个关于我的片段的问题,其中包含所有聊天的列表视图.
当用户收到消息时,聊天列表会更新(显示每个聊天的最后一条消息)(图像1).
当聊天不可见并且在该聊天中收到消息时,用户将收到通知(图2)
此时问题就出现了.当用户点击通知时,聊天列表视图似乎已被破坏.当用户在点击通知后收到另一条消息时,他/她的手机将振动,但聊天列表视图不会更改/更新.
单击通知后,其他视图可以正常工作.
下面是一段处理listview更新的代码.
protected PacketListener packetListener = new PacketListener() {
@Override
public void processPacket(Packet packet) {
final Message message = (Message) packet;
if (message.getBody() != null) {
final String fromName = StringUtils.parseName(message.getFrom());
runOnUiThread(new Runnable(){
@Override
public void run() {
Boolean seen = false;
if(ChatFragment.currentChat != null && ChatFragment.currentChat.getContact().getUsername().equals(fromName) && VisibilityHelper.appIsVisible() && VisibilityHelper.fragmentIsVisible(ChatFragment.fragmentClassName)) {
seen = true;
}
Long chat_id = chatsDataSource.getChatByContactId(contactsDataSource.getContactByUsername(fromName).getId()).getId();
ChatMessage newChatMessage = chatMessagesDataSource.insertChatMessage(chat_id, ConstantHelper.CHAT_MESSAGES_TYPE_RECEIVED, seen, DateHelper.getDatetime(), message.getBody());
Log.d("DEBUG", VisibilityHelper.sCurrentFragmentClassName);
if(VisibilityHelper.appIsVisible() && …
Run Code Online (Sandbox Code Playgroud) cakephp ×2
android ×1
blink ×1
cakephp-3.0 ×1
confirm ×1
css ×1
gmail ×1
gmail-api ×1
google-api ×1
java ×1
javascript ×1
macos ×1
node.js ×1
pagination ×1
paginator ×1
phalcon ×1
phantomjs ×1
post ×1
swift ×1
terminology ×1
virtual ×1
webkit ×1