注意:我在下面的扰流器中解释这些奇怪的网址。
Electron@2.0.4
jquery@3.3.1
当我尝试使用$ .ajax到Electron jquery内部的绝对路径时,似乎摆脱了我的有效负载。我使用以下内容:
$.ajax({
url: "/test/anything?func=ajax",
method: "POST",
processData: false,
contentType: "application/json",
data: JSON.stringify({foo: "bar"}),
});
fetch("/test/anything?func=fetch", {
method: "POST",
mode: "cors",
body: JSON.stringify({foo: "bar"})
});
他们提出以下要求:
如您所见,ajax调用在提取时没有有效负载。有谁知道解决此问题的方法,或者是否有这种行为的原因?
对于奇怪的URL,我使用服务工作者将以/test
开头的URL转发到http://localhost
,如下图所示正常工作。 Localhost仅用于测试,我在docker上运行了httpbin的本地副本。
我这样做是为了将Web应用程序移植到电子版,因此除了index.html更改和添加sw.js之外,代码库可以相同。
答案 0 :(得分:0)
多亏了Rory的评论,我找到了解决方案。我安装了express,并将firstprivate
文件添加到项目根目录,内容如下:
express.js
使用this gist,我在const express = require('express')
const app = express()
app.use(express.static('.'))
app.listen(3000)
文件的各个位置添加了以下内容:
main.js
服务工作者仍然收到请求,并将const express = require('./express.js'); //<
function createWindow () {
mainWindow.loadURL('http://localhost:3000/index.html'); //<
}
替换为http://localhost:3000/test
服务工作者还发送OPTIONS请求,以确保允许跨域,而提取请求则不允许。这似乎是因为ajax请求具有X-Requested-With标头,而提取则没有。