我对网站开发很新.我正在一个用户使用用户名/密码登录的站点上工作,并从服务器获取一个sessionID作为响应.每个请求都会将此会话ID发送回服务器(并返回一个新的会话ID).
如果用户在多个标签页或窗口中打开它,我希望该网站正常工作.即,一旦在一个选项卡中登录,在另一个选项卡中打开仅限成员的URL就可以在没有登录的情况下工作.(并且,在一个选项卡中注销会从所有选项卡中注销.)我认为如果不将最新的sessionID存储在一个选项中,就无法执行此操作.曲奇饼.这样,最新的sessionID可以在所有选项卡中"共享".
但是,我开始阅读有关cookie和一些安全威胁的内容.我不知道每次请求都会发送cookie.我不需要将我的cookie发送到服务器.sessionID被添加到xhr请求的标头中 - 不作为cookie读取.所以我想知道是否有办法禁止发送此cookie.我唯一的目的是允许同一浏览器中的多个选项卡/窗口共享同一个会话.
我正在读取cookie的path参数.显然,这可以用来限制cookie何时被发送到服务器?如果我将路径设置为永远不会被使用的东西怎么办?这会阻止cookie自动发送出去吗?我只想从JavaScript访问它.
同事已经在这个应用程序的服务器端提供了很多安全措施,我不会在这里讨论.所以这个问题只是关于我能够和应该采取哪些客户端预防措施,特别是使用cookie,以获得最佳安全性.如果有更好的方法允许仅限会员的网站正常工作,同时打开多个标签,我会全力以赴.
我正在努力将Qt 5.5,QWebView项目移植到Qt 5.6(beta),QWebEngine.我在这里看过移植指南.我的代码看起来像这样:
.h文件定义_view如下:
QWebEngineView* _view;
Run Code Online (Sandbox Code Playgroud)
并且.cpp构造函数(类继承自QWidget)具有:
QVBoxLayout* vbox = new QVBoxLayout(this);
_view = new QWebEngineView(this);
connect(_view, SIGNAL(loadFinished(bool)), this, SLOT(loadPageFinished(bool)));
QString webDir = getReportBasePath() + no_tr("/index.html#") + startingPage;
// QWebEnginePage *page = _view->page(); // <-- CRASH!!
_view->load( QUrl("file:///" + webDir ) ); // <-- CRASH!!
_view->show();
vbox->addWidget(_view);
Run Code Online (Sandbox Code Playgroud)
在执行page()或load()方法时,整个事情崩溃了:
Unhandled exception at 0x67019C66 (Qt5Cored.dll) in qxs.exe: 0xC0000005:
Access violation reading location 0x00000000.
Run Code Online (Sandbox Code Playgroud)
我已经验证了_view指针不是null.
如果您查看文档,他们在这里有一个示例,它几乎与我上面的代码完全相同.我也尝试将load()调用替换为与他们相同:
view->load(QUrl("http://qt-project.org/"));
Run Code Online (Sandbox Code Playgroud)
它仍然崩溃.什么可能导致这些崩溃的想法?
我是否需要首先创建QWebEnginePage并在QWebEngineView上创建setPage()?(我假设没有...)它是否与我正在使用的Qt二进制文件(预先为Windows 32位MSVC 2013构建)有关?
堆栈跟踪的相关部分:
Qt5WebEngineWidgetsd.dll!QWebEnginePagePrivate::QWebEnginePagePrivate(QWebEngineProfile * _profile) Line 95 …Run Code Online (Sandbox Code Playgroud) 我来自 Mac 世界,对 Windows 开发还很陌生。非常简单的问题:我需要在 Visual Studio 2010 中包含哪些库才能访问一些基本函数,例如 strtof() 或 snprintf()?获取这些链接器错误... #including <stdlib.h>、、<ctype.h><string.h>
在iOS 7中,当用户以前在UISearchBar中清除文本时,蓝色的"搜索"按钮将被禁用.有没有办法改变它,所以它总是启用?我希望用户能够在没有文本时点击"搜索",以显示列表中的所有项目,而不是按搜索词对其进行过滤.(当前,当用户尝试清除以前的搜索词时,蓝色的"搜索"按钮将被禁用.)
我可以在我的委托的searchBarTextDidEndEditing回调中触发一个新搜索,这样Dismiss键盘按钮会生成一个包含所有结果的刷新列表...但理想情况下,即使字段中没有文本,我也希望蓝色搜索按钮可用.这可能吗?
我对Windows开发相当新(在Mac方面经验丰富),并且我尝试使用SHGetFolderPath(因为它与Windows XP兼容)来获取当前用户的app数据文件夹的路径.然而,无论我传递的是什么旗帜,我每次都会得到一个"C"的输出路径.我试过了两个:
CSIDL_APPDATA
和
CSIDL_LOCAL_APPDATA
有和没有CSIDL_FLAG_CREATE标志.每次都有相同的结果:"C".我在这做错了什么?
#include <windows.h>
#include <shlobj.h> // SHGetFolderPath
#include <stdio.h>
#include <stdlib.h>
//#pragma comment(lib, "shell32.lib")
int main()
{
CHAR path[MAX_PATH];
HRESULT result = SHGetFolderPath(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, SHGFP_TYPE_CURRENT, path);
if (result != S_OK)
printf("Error: %d\n", result);
else
printf("Path: %s\n" , path);
printf( "String length: %d\n", strlen(path) );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
SHGetFolderPath的文档:http://msdn.microsoft.com/en-us/library/windows/desktop/bb762181(v = vs.85) .aspx
我试图更好地理解 TypeScript。我发现如果我写这样的错误:
function doStuff() {
if (physician.email == "george@gmail.com")
{
var physician = {email: "bob@gmail.com", name: "Dr. Bob"};
/* .... */
} }
Run Code Online (Sandbox Code Playgroud)
TypeScript 不会发现在我们尝试使用其属性之一之后定义了医师对象的问题。这会导致运行时错误:
类型错误:无法读取未定义的属性“电子邮件”。
为什么 TypeScript 转译器不捕捉这样的东西?我相信使用 TypeScript 2.0。
我来自编译语言背景(C/C++/Objective-C),目前正在用JavaScript编写一个完整的应用程序.(实际上是TypeScript,但我的问题对两者都是一样的.)
我遇到的问题是,如果发生单个错误,整个执行流程将停止.例如,如果我有:
myFunction()
{
doSomethingA();
doSomethingB();
doSomethingC();
}
Run Code Online (Sandbox Code Playgroud)
那么如果doSomethingA()有这样的东西:
var myValue = window.myData.myValue;
Run Code Online (Sandbox Code Playgroud)
但是当时"窗口"上不存在"myData",则所有代码STOPS EXECUTING ... doSomethingB()和doSomethingC()都不会执行,并且会记录控制台错误.对于简单的网页来说这可能没问题,但是我正在创建一个应用程序,它不需要莫名其妙地"停止工作".
当然,我可以使用try/catch来"了解"这个错误,但是STILL并没有解决我的问题:我想以doSomethingB()和doSomethingC()继续执行的方式编写代码,即使出现问题.但是,这对我的代码来说是一个巨大的过度简化.想象一下,这些功能有很多.用每个独立的try/catch块包围它们是不切实际的.即使我这样做,即使第一部分中的某些内容失败,我也需要继续执行给定函数的其余部分.
当然,我可以通过使用以下方式"保护"我的变量:
if ( typeof window.myData != "undefined")
Run Code Online (Sandbox Code Playgroud)
要么
if (window.myData.hasOwnProperty("myValue")
Run Code Online (Sandbox Code Playgroud)
但是如果要检查多个级别,例如访问时,则会变得非常混乱:
var myValue = window.myData.something.anotherLevel.somethingElse.value;
Run Code Online (Sandbox Code Playgroud)
现在我必须检查myData,something,anotherLevel和somethingElse是否全部有效,然后才能"安全地"访问此值.这导致非常难看的代码.
有没有更好的方法让我的代码更"防弹"?如果属性意外丢失,我需要代码在问题陈述后继续执行.如果没有"保护"每一个访问数据甚至很少有未定义机会的语句,这是否可能?
c ×2
typescript ×2
windows ×2
cookies ×1
directory ×1
ios ×1
ios7 ×1
javascript ×1
qt ×1
qt5.6 ×1
qtwebengine ×1
security ×1
uisearchbar ×1
web ×1