小编h34*_*4cr的帖子

NodeJS/express:缓存和304状态代码

当我重新加载使用express制作的网站时,我得到一个使用Safari(而不是Chrome)的空白页面,因为NodeJS服务器向我发送了304状态代码.

怎么解决这个?

当然,这也可能只是Safari的问题,但实际上它适用于所有其他网站,所以它也必须是我的NodeJS服务器上的问题.

要生成页面,我正在使用Jade res.render.

更新:似乎发生此问题是因为Safari发送'cache-control': 'max-age=0'重新加载.

更新2:我现在有一个解决方法,但有更好的解决方案吗?解决方法:

app.get('/:language(' + content.languageSelector + ')/:page', function (req, res)
{
    // Disable caching for content files
    res.header("Cache-Control", "no-cache, no-store, must-revalidate");
    res.header("Pragma", "no-cache");
    res.header("Expires", 0);

    // rendering stuff here…
}
Run Code Online (Sandbox Code Playgroud)

更新3: 所以完整的代码部分目前是:

app.get('/:language(' + content.languageSelector + ')/:page', pageHandle);

function pageHandle (req, res)
{
    var language = req.params.language;
    var thisPage = content.getPage(req.params.page, language);

    if (thisPage)
    {
        // Disable caching for content files
        res.header("Cache-Control", "no-cache, no-store, must-revalidate");
        res.header("Pragma", "no-cache");
        res.header("Expires", 0); …
Run Code Online (Sandbox Code Playgroud)

safari caching node.js http-status-code-304 express

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

iOS 7圆形框架按钮

iOS App Store有一个蓝色圆形框架按钮​​,用于购买/下载应用程序.

在我的应用程序中,您可以下载其他内容,我希望有一个类似的按钮,只是因为它看起来很熟悉用户.

如果您不知道,我的意思是:这些按钮,如"3.99美元"

在此输入图像描述

这怎么可能?

cocoa-touch objective-c uibutton ios

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

AVSpeechSynthesizer错误AudioSession

我正在玩AVSpeechSynthesizer并且总是遇到这些错误:

ERROR:     >aqsrv> 65: Exception caught in (null) - error -66634
ERROR:     AVAudioSessionUtilities.h:88: GetProperty_DefaultToZero: AudioSessionGetProperty ('disa') failed with error: '?ytp'
Run Code Online (Sandbox Code Playgroud)

我的代码是:

AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
[synthesizer setDelegate:self];
speechSpeed = AVSpeechUtteranceMinimumSpeechRate;
AVSpeechUtterance *synUtt = [[AVSpeechUtterance alloc] initWithString:[[self text] text]];
[synUtt setRate:speechSpeed];
[synUtt setVoice:[AVSpeechSynthesisVoice voiceWithLanguage:languageCode]];
[synthesizer speakUtterance:synUtt];
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这些错误?

objective-c avfoundation ios avaudiosession

19
推荐指数
1
解决办法
8175
查看次数

在UINavigationController的UINavigationBar内部或顶部显示UIProgressView

我想要一个UIProgressView来显示导航栏底部的进度(就像在iOS 7中发送iMessage或短信一样).但是我在导航控制器的每个表视图视图中都需要这一点.所以对我来说很清楚:我必须将它添加到UINavigationController中.但问题是,不可能将UIProgressView添加到UINavigationController.所以我尝试了两件事:

我尝试以编程方式将其添加到UINavigationController的视图中.但问题是定位UIProgressView并在更改设备旋转时使其看起来很好.

我尝试的第二件事是将UIProgressView添加到每个UITableView,但是我真的必须为每个视图执行此操作.它也不好看,因为它不在导航栏的顶部,而是在它下面.但是我不喜欢第二种解决方案的主要原因是因为ProgressViews带有他们的TableView,所以你没有静态的,而是改变它们.

在此之后,我不知道这样做,所以我问你......有没有人知道如何做到这一点?

它应该是这样的: 在此输入图像描述

uinavigationbar uitableview uinavigationcontroller uiprogressview ios

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

Safari:重新加载后“由于访问控制检查而无法加载获取 API”

我在 Safari 的 CORS 系统中遇到了一些奇怪的行为。我有一个从 JS Fetch API 发送的 POST 请求,如下所示:

const res = await fetch('http://localhost:8888/myPath', {
  method: 'POST',
  mode: 'cors',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(body)
});
Run Code Online (Sandbox Code Playgroud)

根据 Safari 的网络监控,请求头是这样的:

POST /myPath HTTP/1.1
Accept: */*
Content-Type: application/json
Origin: http://my.domain.com
Content-Length: 335
Accept-Language: en-gb
Host: localhost:8888
User-Agent: Mozilla/5.0...
Referer: http://my.domain.com
Accept-Encoding: gzip, deflate
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

以下响应来自服务器:

HTTP/1.1 200 OK
Date: Tue, 28 Jul 2020 19:15:45 GMT
Vary: Origin
Content-Length: 4
Content-Type: application/json
Access-Control-Allow-Origin: http://my.domain.com
Server: uvicorn
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在这台机器上没有 Wireshark,Safari 没有显示预检请求。所以我不知道是否有任何预检发生以及它看起来如何。 …

safari fetch cors

3
推荐指数
1
解决办法
9764
查看次数