小编Rob*_*bok的帖子

阻止点击链接的 cookie 有什么好处?(SameSite=严格)

因此,对于 Google Chrome 和 Opera,cookie 具有SameSite属性,它可以具有以下两个值之一:strictlax

它们之间的一些区别之一是,SameSite=strict当我们单击指向另一个域的链接时,将阻止发送 cookie。

我知道这SameSite还不是 W3C 的建议,但是这种行为的潜在好处是什么?我觉得这很烦人,因为当我们刷新或单击当前域上的另一个链接时,无论如何都会发送 cookie。这会导致相当奇怪的用户体验 - 例如:我们已注销,然后我们单击某个国内链接或刷新,我们突然通过了身份验证。

我知道它不是为了最好的用户体验而设计的,而是为了安全。但我们在安全方面实际上赢得了什么?

browser security cookies google-chrome http

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

无法在强制转换中将“字符”类型的值转换为“字符串”类型

在 Swift 中,我希望以下是一个完全有效的代码:

let snailCharacter: Character = ""
let snailString = snailCharacter as String
Run Code Online (Sandbox Code Playgroud)

但显然,它产生了一个错误:

无法在强制转换中将“字符”类型的值转换为“字符串”类型

解决方案是使用这样的String初始化程序:

let snailString = String(snailCharacter)
Run Code Online (Sandbox Code Playgroud)

我认为Character是 的一个子集String,这让我感到惊讶。为什么禁止投射CharacterString

我在 Xcode 9 beta 4 中使用 Swift 4。

string swift

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

这个开关声明不是废话吗?

我在Laravel 5核心中发现了这个奇怪的switch语句:

switch (count($args)) {
    case 0:
        return $instance->$method();
    case 1:
        return $instance->$method($args[0]);
    case 2:
        return $instance->$method($args[0], $args[1]);
    case 3:
        return $instance->$method($args[0], $args[1], $args[2]);
    case 4:
        return $instance->$method($args[0], $args[1], $args[2], $args[3]);
    default:
        return call_user_func_array([$instance, $method], $args);
Run Code Online (Sandbox Code Playgroud)

有没有理由为什么他们可能决定建立这样的东西而不是仅仅使用它?

return call_user_func_array([$instance, $method], $args);
Run Code Online (Sandbox Code Playgroud)

有什么好处?

php switch-statement laravel laravel-5

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

json_decode()中的新行和制表符(PHP 7)

我的代码使用json_decode()正常与PHP 5.6.迁移到PHP 7.0后,json_decode()返回NULL并json_last_error()告诉我我的错误是:

控制字符错误,可能编码错误

调试后,我发现我的问题是字符串值中的制表符和换行符.如果我将它们都删除,它就可以了.如果我离开无论是新线选项卡,出现错误.

json_decode()PHP 7中的行为是否发生了变化?我想在我的.json文件中保留标签和新行,以提高可读性.如果我将标签替换为\ t并将新行替换为\n,则代码有效.

如何保留新的行和标签?

php json php-7

6
推荐指数
2
解决办法
4060
查看次数

如何在Facebook Lead Ads API中获取表单字段?

我正在使用Facebook Lead Ads API.我需要通过ID从表单中检索所有字段.我知道我可以:

  • 通过调用获取所有表单/<PAGE_ID>/leadgen_forms,但它不返回字段
  • 获取表单/<FORM_ID>,但它只显示名称和一些数据,但不显示字段
  • 得到所有的线索/<FORM_ID>/leads- 它给了我每个领先的领域,但只有我有领导; 这个解决方案还有另一个问题 - 字段的顺序是随机的

有没有专门的方法来检索leadgen表单字段,即使没有潜在客户呢?

我发现我可以下载CSV,在第一行中,它为我提供了所有字段ID(以及其他一些列).我不确定如何在PHP中读取此文件的内容,因为当我尝试使用get_file_contents()它时它会给我一些HTML .

php facebook facebook-graph-api

6
推荐指数
2
解决办法
4667
查看次数

如何在ESLint中对齐const缩进?

我正在使用ESLint使我的JavaScript代码样式保持一致.我最喜欢的缩进级别是4,我希望我的声明样式是这样的:

function () {
    let a = 1,
        bbb = 2;

    const cc = 3,
          ddd = 4;
}
Run Code Online (Sandbox Code Playgroud)

但是存在一个问题,因为每个结构的缩进规则需要一个数字,这是基本缩进的乘法.如果我将基本缩进设置为4,我似乎无法对齐consts.

如果我将规则设置为:

"indent": ["error", 4, {"VariableDeclarator": {"const": 1}}],
Run Code Online (Sandbox Code Playgroud)

正确的对齐将是4个空格:

const cc = 3,
    ddd = 4;
Run Code Online (Sandbox Code Playgroud)

如果我将规则设置为2:

"indent": ["error", 4, {"VariableDeclarator": {"const": 2}}],
Run Code Online (Sandbox Code Playgroud)

它预计会有8个空格:

const cc = 3,
        ddd = 4;
Run Code Online (Sandbox Code Playgroud)

它不接受浮动数字.如何使用ESLint以我想要的方式对齐var,let和const?

javascript const ecmascript-6 eslint

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

属于 Laravel 5 中的数据透视表

假设我有以下数据库架构:

在此处输入图片说明

dogsowners与经典连接belongsToMany。怎么样的walks表?我希望能够在这种关系中使用 Eloquent 的好东西:

$dogs = Dog::with('walks')->get();
$walks = Walk::with('dogs')->get();
Run Code Online (Sandbox Code Playgroud)

理论上,我可以dog_owner_id用两个单独的列替换:dog_idowner_id。这将使使用 Eloquent 变得容易,但我会失去一些数据完整性,因为不相关的 Dog 和 Owner 可能会去散步(这对两者都不安全!)。

Walk.php 中,应该如何定义关系?

public function dog() {
    // return ???;
}
Run Code Online (Sandbox Code Playgroud)

如何Dog.phpOwner.php

public function walks() {
    // return ???;
}
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5

6
推荐指数
2
解决办法
4929
查看次数

如何在全球范围内安装ESlint?

我正在尝试安装ESlint,将它与Sublime Text 2一起用于我所有的本地项目.有关全局安装的配置文档非常不清楚:

注意:eslint --init用于基于每个项目设置和配置ESLint,并将在运行它的目录中执行ESLint及其插件的本地安装.如果您更喜欢使用ESLint的全局安装,则还必须全局安装配置中使用的所有插件.

我不明白他们的意思.我使用eslint --init它并在本地安装了ESlint node_modules以及所有插件.关于全局安装插件没有任何解释.我怎么做?另外,如果eslint --init安装本地ESlint安装,如何使用全局ESlint ?这太令人困惑了.

npm sublimetext eslint

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

使用 Laravel 测试 JSON 响应

我用 Laravel 准备了一个示例 API。它总是返回这个对象:

{
    "a": 1,
    "b": 2
}
Run Code Online (Sandbox Code Playgroud)

现在,我想更好地了解如何使用phpunit. 我发现有assertJsonassertJsonFragment方法,但我无法理解它们之间的区别。

假设我想断言响应的确切结构,因此它需要是a=1b=2,仅此而已。起初,我确信这会起作用:

$response = $this->get('/api/foo');

$response->assertStatus(200)
         ->assertJson(['a' => 1, 'b' => 2]);
Run Code Online (Sandbox Code Playgroud)

它将通过测试,但问题是,如果我向响应添加更多属性(例如c=3或其他属性),它仍然会通过测试。然后有一种assertJsonFragment方法,对于我的测试,其行为相同,只是给出不同的错误消息。

assertJson越野车吗?有没有其他方法可以完成我想要做的事情,即确保响应是这组特定的属性?

在 Laravel 5.6 和 5.7 上测试。

php phpunit json laravel

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

如果我显式返回 Promise,我应该定义异步函数吗?

我们知道async函数隐式返回 Promise。但我有一个纯粹迂腐的问题。async如果我显式返回 Promise,我应该添加关键字吗?

这是:

const wait = async ms => new Promise(
    resolve => setTimeout(resolve, ms)
);
Run Code Online (Sandbox Code Playgroud)

和这个有什么不同吗?

const wait = ms => new Promise(
    resolve => setTimeout(resolve, ms)
);
Run Code Online (Sandbox Code Playgroud)

我相信从技术上来说它们是相同的。这两种方法背后是否有任何风格指南或官方推荐来定义此类功能?

javascript asynchronous promise es6-promise

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