小编Dan*_*dis的帖子

浏览器不会在支付网关向我们网站的发布请求上设置 ASP.NET_SessionId cookie

我们在 Web 应用程序的支付过程中遇到了一个奇怪的问题,导致会话数据丢失。

在这个过程中,在我们的结帐页面用户被重定向到支付提供商的页面后,只要他/她在那里完成,就会被重定向回我们的网站(到我们指定的网址)。最后一个重定向是通过浏览器对支付提供商的 html 代码的评估完成的,该代码基本上由一个发布到我们网站的表单和几行在页面加载时发布该表单的 javascript 代码组成。此时浏览器发出 post 请求,但没有设置“ASP.NET_SessionId”cookie,该 cookie 存在于先前对完全相同的域(我们的应用程序的域)发出的请求中。更奇怪的是,它设置了我们使用的另一个名为“AcceptCookie”的 cookie。它只是简单地选择删除“ASP.NET_SessionId”cookie。

为了说明这种情况,我截取了一些屏幕截图。(在这些屏幕截图中,橙色和绿色矩形包含完全相同的值。)

  1. 这是当用户按下“签出”按钮时(向我们的应用程序)发出的请求。在此请求之后,用户被重定向到支付提供商的页面。

退房要求

  1. 这是用户在那里完成后由支付提供商提供的最后一页。如您所见,它只是一个简单的表单,会在页面加载时自动发布到我们的域中。

支付提供商的最终回应

  1. 但是这个发布请求不包括“ASP.NET_SessionId”cookie,这会导致获取新的会话 ID 和丢失以前的会话数据。同样,只缺少“ASP.NET_SessionId”,而不是另一个名为“AcceptCookie”的。

将用户带回我们网站的发布请求(在上一步中使用 javascript 制作)

最后我们认为在旧版本的浏览器上不会出现这个问题。在 Firefox 52 上它就像一个魅力,但在 Firefox 71 上会发生上述问题。

有任何想法吗?

注意:这是一个 ASP.NET MVC 应用程序,其 targetFramework="4.5.2"

祝你今天过得愉快。

asp.net cookies session

15
推荐指数
1
解决办法
6417
查看次数

带有 DecimalFormat 的 RoundingMode.UP 无法按预期工作

每当有十进制值时,我都试图四舍五入一个 Double 数字。我正在尝试以下。以下代码段按预期四舍五入所有其他值。

1.08 -> 2
9.5 -> 10
Run Code Online (Sandbox Code Playgroud)

但是将 0.08 舍入为 0 而不是 1。我在这里遗漏了什么吗?

DecimalFormat df = new DecimalFormat("0");
df.setRoundingMode(RoundingMode.UP);
Double number = 0.08;
System.out.println(df.format(number)); // expecting 1 but produces 0
    
number = 1.08;
System.out.println(df.format(number)); // correctly produces 2
Run Code Online (Sandbox Code Playgroud)

java double rounding

14
推荐指数
1
解决办法
242
查看次数

本地运行 Play 服务器时 M1 Mac 出现 UnsatisfiedLinkError

当利用 LeadIQ 的 play 样板运行新项目时,我们将在低于 5.7.0 版本的旧版本 JNA 中遇到 UnsatisfiedLinkError。

我认为这是由于 ARM M1 架构之间的二进制文件不兼容造成的。怎么解决呢?

这是完整的堆栈跟踪,显示 JNA 二进制文件中的“没有匹配的架构”。

[error] java.lang.UnsatisfiedLinkError: /Users/zackng/Library/Caches/JNA/temp/jna1415930593236960966.tmp: dlopen(/Users/zackng/Library/Caches/JNA/temp/jna1415930593236960966.tmp, 1): no suitable image found.  Did find:
[error]     /Users/zackng/Library/Caches/JNA/temp/jna1415930593236960966.tmp: no matching architecture in universal wrapper
[error]     /Users/zackng/Library/Caches/JNA/temp/jna1415930593236960966.tmp: no matching architecture in universal wrapper
[error]     at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
[error]     at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
[error]     at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
[error]     at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
[error]     at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
[error]     at java.base/java.lang.Runtime.load0(Runtime.java:768)
[error]     at java.base/java.lang.System.load(System.java:1837)
[error]     at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1018)
[error]     at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:988)
[error]     at com.sun.jna.Native.<clinit>(Native.java:195)
[error]     at io.methvin.watchservice.jna.CarbonAPI.<clinit>(CarbonAPI.java:20)
[error]     at …
Run Code Online (Sandbox Code Playgroud)

java macos scala jna sbt

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

Gunicorn“应用程序对象必须可调用”错误

我正在尝试使用 Gunicorn 和 nginx 部署一个用 Dash 编写的应用程序。几个月前,当我知道自己在做什么时,我成功部署了同一个应用程序。我想做一些更新并重新部署,但现在即使我删除了所有更新,部署也无法正常工作。当我运行 Gunicorn 时,出现错误Application must be callable

我的项目位于folder,其中包含unified.py文件,其中包含我的应用程序。在 中unified.pyapp = dash.Dash(__name__, external_stylesheets=external_stylesheets)所以我将我的 app 变量定义为 app.

我运行gunicorn folder.unified:app并收到此错误。但是,如果我运行,from folder.unified import app我会得到应用程序对象和所有正确的属性,没有问题。

我已经尝试了gunicorn调用的各种变体(例如在项目文件夹中并说gunicornunified:app , being the parent folder and usingGunicorn文件夹:app ,Gunicorn文件夹:unified`。我知道它可以工作,因为它以前工作过。但对于生活对我来说,我无法弄清楚现在发生了什么。

我希望它的运行方式与我使用 python 使用python unified.py.

有一段时间我以为我解决了它,因为我开始收到不同的错误(说我无法从另一个文件夹获取 .pkl 文件),但后来我注释掉了文件中的这些行,unified.py它又回到了相同的状态Application must be callable错误!

python gunicorn

10
推荐指数
2
解决办法
5583
查看次数

如何在缺少 nvd 文件时忽略 Maven 依赖项检查失败

我今天尝试使用 Maven 发布插件执行我的项目的发布。由于dependency-check-maven插件尝试下载尚未上传的2020版CVD文件而失败:

无法下载元文件:https : //nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2020.meta ; 收到 404 -- 未找到资源

NVD 数据馈送页面的简要阅读显示该文件尚未上传。
在此处输入图片说明

显然我可以等待大约 24 小时,这个问题可能会消失;但是,我仍然想知道如何覆盖此 URL 以在今天发布我的项目。我尝试了一些命令行选项,包括以下方面的变化:

mvn dependency-check:check -DcveUrlBase= https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2019.json.gz

但是,它们仍然会导致错误。我知道我可以跳过此检查,但更愿意在 2020 年之前检查所有文件。

这个问题建议使用nist-data-mirror插件创建一个本地存储库,但与等待 24 小时相比,这似乎有很多开销。

是否有任何命令行或易于恢复的pom.xml编辑可以让我今天发布我的项目?

编辑:这已在插件站点报告为问题

maven maven-dependency maven-dependency-check-plugin

9
推荐指数
1
解决办法
5442
查看次数

我可以在Java中将常量从int更改为byte而不会破坏向后兼容性吗?

我正在向JNA提交一个更改,它在以前的版本中定义了一组常量作为类型,具体来说:int

int VER_EQUAL = 1;
int VER_GREATER = 2;
int VER_GREATER_EQUAL = 3;
... etc...
Run Code Online (Sandbox Code Playgroud)

(由于它们在定义interface他们是自动staticfinal).

这些常量用作VerSetConditionMask函数中的Condition参数,该函数需要一个参数,在JNA中映射到Java .BYTEbyte

int在该函数中使用现有常量,我需要(和其他用户)明确地对它们进行类型转换,因此我想将库中的这些常量值更改为byte,例如,

byte VER_EQUAL = 1;
byte VER_GREATER = 2;
byte VER_GREATER_EQUAL = 3;
... etc...
Run Code Online (Sandbox Code Playgroud)

我不认为这种改变会破坏向后兼容性,因为使用这些常量的任何代码目前至少应该期望一个int,并且很乐意扩大byte无怨言.我已经写了很多测试代码来说服自己.我知道,改变Object类型(如IntegerByte)是行不通的,但我相信这是罚款元.然而,尽管一小时在网上搜索确认,我仍然是最小的不相信.

这种变化是否向后兼容?或者我错了,有没有这种情况会破坏依赖int原语的现有代码?

java casting backwards-compatibility primitive-types

8
推荐指数
1
解决办法
102
查看次数

如何在亚马逊Linux 2上安装snap

如何在我的 amazon linux 2 上安装 snap?

我浏览了网络上的一些链接:

我似乎找不到在我的 amazon linux 2 机器上安装 snap 的正确说明。我以前做过,但我忘了我是怎么做的。

amazon-workspaces amazon-linux-2

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

Subversion服务器SSL证书验证失败:和其他原因

我有一个SVN系统,工作得很好,最近升级后突然停止工作.我的设置:

  • 我使用VisualSVN Server 2.7.4在Windows 2008服务器上托管了一个存储库.服务器使我能够随意生成自签名证书,根据需要输入我自己的主机名或其他数据.

  • 我在托管计算机和运行Mac OS X 10.9.1(Mavericks)的我自己的MacBookPro上使用Eclipse(Kepler)进行java编码.我有Eclipse的subclipse附加组件,它需要使用java HL进行subversion.

  • 我已经安装了macport和subclipse请求的最新subversion/javahl包.Eclipse/subversion接口似乎工作正常,但是存在Eclipse无法正常导航的命令行subversion错误.解决命令行错误是主要问题.

  • 我之前通过macports安装了以下版本,事情似乎工作得很好:

    subversion @ 1.8.5_1 + universal
    subversion-javahlbindings @ 1.8.5_0 + no_bdb + universal

  • 作为安装/故障排除不相关内容的一部分,我升级了所有安装了以下新版本的macport:

    subversion @ 1.8.8_0 + universal
    subversion-javahlbindings @ 1.8.8_0 + no_bdb + universal

  • 升级后,svn通过我的mac上的eclipse失败.我可以通过临时接受证书来强制它通过命令行.它在Windows 2008服务器计算机上仍然可以正常运行.

在证书更改后第一次我得到永久接受的选项,但在这样做之后,它失败并回到第二次"临时"对话.

$ svn update
Updating '.':
Error validating server certificate for 'https://192.168.100.59:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
 - The certificate hostname does not match.
Certificate information:
 - Hostname: …
Run Code Online (Sandbox Code Playgroud)

svn ssl-certificate

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

Spark Apache 中的 Worker 无法连接到 master

我正在使用独立集群管理器部署 Spark Apache 应用程序。我的架构使用 2 台 Windows 机器:一组作为主机,另一组作为从机(工作程序)。

Master:我在其上运行:\bin>spark-class org.apache.spark.deploy.master.Master这是 Web UI 显示的内容:

Slave:我在其上运行:\bin>spark-class org.apache.spark.deploy.worker.Worker spark://192.*.*.186:7077这就是 Web UI 显示的内容:

问题是worker节点无法连接到master节点,并显示以下错误:

17/09/26 16:05:17 INFO Worker: Connecting to master 192.*.*.186:7077...
17/09/26 16:05:22 WARN Worker: Failed to connect to master 192.*.*.186:7077
org.apache.spark.SparkException: Exception thrown in awaitResult:
    at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:205)
    at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:75)
    at org.apache.spark.rpc.RpcEnv.setupEndpointRefByURI(RpcEnv.scala:100)
    at org.apache.spark.rpc.RpcEnv.setupEndpointRef(RpcEnv.scala:108)
    at org.apache.spark.deploy.worker.Worker$$anonfun$org$apache$spark$deploy$worker$Worker$$tryRegisterAllMasters$1$$anon$1.run(Worker.scala:241)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
  Caused by: java.io.IOException: Failed to connect to /192.*.*.186:7077
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:232)
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:182)
    at …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-standalone

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

JPMS:--add-opens 不适用于 java.lang.reflect.InaccessibleObjectException

我将 Java 14 与 Jetty 9.4 和 Weld-servlet-shaded-3.1 一起使用,但出现此异常:

Caused by: java.lang.reflect.InaccessibleObjectException: 
Unable to make protected final java.lang.Class   
java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
throws java.lang.ClassFormatError accessible: module java.base does 
not "opens java.lang" to module weld.servlet.shaded.
Run Code Online (Sandbox Code Playgroud)

根据这里的回答:https : //stackoverflow.com/a/41265267/5057736我试着添加

--add-opens java.base/java.lang=ALL-UNNAMED 
Run Code Online (Sandbox Code Playgroud)

--add-opens java.base/java.lang=weld.servlet.shaded 
Run Code Online (Sandbox Code Playgroud)

但没有人帮忙。谁能说一下怎么修?

编辑 1
我发现这个问题出现在 Java 12,13,14 OpenJDK/Oracle 中。但是,如果我使用 Java 11 OpenJDK/Oralce 一切正常,我什至不添加任何--add-opens. 怎么解释?

编辑 2
我检查了Jetty pomWeld pom,它们都具有相同的属性:

<compiler.source>1.8</compiler.source>
<compiler.target>1.8</compiler.target>
Run Code Online (Sandbox Code Playgroud)

编辑 3
Java 版本

$ java -version
openjdk version "14" 2020-03-17
OpenJDK Runtime …
Run Code Online (Sandbox Code Playgroud)

java jetty java-platform-module-system weld java-14

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