我有两个网络服务 - gRPC 客户端和 gRPC 服务器。服务器是用 .NET Core 编写的,因此对 gRPC 强制执行 HTTP/2。但是,客户端是托管在 IIS 8.5 上的 .NET Framework 4.7.2 Web 应用程序,因此它仅支持 HTTP/1.1。
由于升级客户端需要一些时间,我在想是否可以在服务器端使用 HTTP/1.1 而不是 HTTP/2,但我找不到任何有关如何实现的信息。
是否可以将 HTTP/1.1 用于用 .NET Core 编写的 gRPC 服务器?如果是这样 - 如何?
我正在学习Haskell中的并行策略.
我写了基于梯形规则(顺序)的积分函数:
integrateT :: (Fractional a, Enum a, NFData a) => (a -> a) -> (a,a) -> a -> a
integrateT f (ini, fin) dx
= let lst = map f [ini,ini+dx..fin]
in sum lst * dx - 0.5 * (f ini + f fin) * dx
Run Code Online (Sandbox Code Playgroud)
我运行如下:
main = do
print $ (integrateT (\x -> x^4 - x^3 + x^2 + x/13 + 1) (0.0,1000000.0) 0.01 :: Double)
Run Code Online (Sandbox Code Playgroud)
以下是运行的统计信息:
stack exec lab5 -- +RTS -ls -N2 -s
1.9999974872991426e29 …Run Code Online (Sandbox Code Playgroud) 我试图将带有ASP.NET Core的cookie的SameCookie属性显式设置为None。
我尝试执行此操作的方法是这样设置CookieOptions的属性值:
var options = new CookieOptions
{
SameSite = SameSiteMode.None
};
Run Code Online (Sandbox Code Playgroud)
(为简便起见,省略了其他属性)
但是,当我检查服务器响应标头(服务器应该使用SameSite = None设置cookie)时,可以看到SameSite被省略了。相反,我可以清楚地看到“价值”,“到期”,“甚至安全”。
如果我将C#代码中的SameSite设置为Lax或Strict,则可以看到它明确包含在Set-Cookie标头中。如果将其设置为“无”,则无法。
我确实检查了两个浏览器-Firefox和Chrome 77(我知道此版本引入SameSite的更改)。
有一个hack包含SameSite = None。您只需要向CookieOptions的Path属性添加以下行:
options.Path += "; samesite=None";
Run Code Online (Sandbox Code Playgroud)
然后可以在响应的Set-Cookie标头中找到它。
有没有一种方法可以配置Kestrel(没有用于托管的IIS,裸Kestrel)在标头中包含SameSite = None,而不会像这样骇客呢?