小编Def*_*ake的帖子

Kotlin:Ktor 如何将文本响应为 html

我想使用库kotlin-html来生成 html 而不是 kotlinx.html。这个库只生成一个 html 文本:

p("A paragraph").render()
// => <p>A paragraph</p>
Run Code Online (Sandbox Code Playgroud)

但我找不到如何使用 Ktor 响应 html 而不是文本

fun Routing.root() {
    get("/") {
        call.respondText {"<p>A paragraph</p>"}
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码将生成一个包含文本的页面,<p>A paragraph</p>而不是 html 页面。而且似乎call.respondHtml只适用于 kotlinx.html DSL。我怎样才能使用纯文本来做到这一点?

kotlin ktor

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

货物运行不反映 main.rs 中的任何代码更改

cargo runcargo rebuild忽略任何代码更改。

我有一个程序

fn main() {
    println!("Hello, World!");
}
Run Code Online (Sandbox Code Playgroud)

然后我就cargo run看到了:

fn main() {
    println!("Hello, World!");
}
Run Code Online (Sandbox Code Playgroud)

然后我将代码更改为:

fn main() {
    println!("Hello, Worldaefafeff!");
    print!("22222412414");
}
Run Code Online (Sandbox Code Playgroud)

cargo run再次:

   Compiling myproject v0.1.0 (/Volumes/.../myproject)
    Finished dev [unoptimized + debuginfo] target(s) in 0.52s
     Running `target/debug/myproject`
Hello, World!
Run Code Online (Sandbox Code Playgroud)

即使我看到“编译”行,这意味着cargo知道文件已更改,但输出是相同的。当我跑步时也会发生同样的情况cargo buildcargo clean我每次都需要跑步吗?

我看到很多人说我做错了。我在一个终端上重复了所有步骤。有什么不对?

fn main() {
    println!("Hello, Worldaefafeff!");
    print!("22222412414");
}
Run Code Online (Sandbox Code Playgroud)

“编译”发生了,但输出是相同的。第二次没有“编译”步骤。我显然不明白我做错了什么。

毫无疑问,倒数第二个发射实际上显示了“Hello,worl”。我确实正确复制了终端内容

   Compiling myproject v0.1.0 (/Volumes/.../myproject)
    Finished dev [unoptimized + debuginfo] target(s) in …
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

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

Chrome 扩展程序不发送 SameSite=Lax cookie

我在通过弹出脚本中的 chrome 扩展程序处理 cookie 时遇到了一些麻烦。

popup.js 内容:

document.addEventListener('DOMContentLoaded', () => {
    function cookieinfo() {
        chrome.cookies.getAll({url: 'http://localhost:8080'}, function(cookie) {
            console.log('Found cookie: ', cookie)
            if (cookie == null)
                return;

            fetch('http://localhost:8080', {credentials: 'include'}).then((response) => {
                // do some stuff
                return response;
            });
        });
    }
    window.onload=cookieinfo;
}, false);
Run Code Online (Sandbox Code Playgroud)

我执行的步骤:

  1. 在本地主机上登录我的应用程序(所以我得到了 cookie)
  2. 打开弹窗(所以 popup.js 被执行)
  3. 我在控制台日志中看到 chrome 找到了必要的 cookie
  4. 服务器说传入请求有空 cookie
  5. 我刷新本地主机应用程序的页面
  6. 我现在登出

也许有人知道我做错了什么?

编辑:

看来原因是我的cookie有参数HttpOnly=trueSameSite=Lax相关链接)。我可以在服务器日志中看到另一个 cookie。但是由于这个线程,如果credentials参数设置为include,则所有 cookie 都将被发送,即使是 httpOnly cookie。由于这个答案,我也尝试将它发送到 …

javascript cookies httponly google-chrome-extension samesite

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