当前位置: 首页 > 知识库问答 >
问题:

Nextjs静态文件CORS问题-导致链接在版本10.1.4上中断

宦源
2023-03-14

我当前的Nextjs应用程序正在从Cloudfront中提取其静态文件。(我在部署期间将/static文件夹上载到S3)

自从更新到版本9以来,我面临着一个奇怪的问题,我的一些CSS文件收到了以下CORS错误:

Access to fetch at 'https://xxx.cloudfront.net/assets/_next/static/css/b1a6e8370451b02b15e6.css' from origin 'https://example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

将Nextjs更新到10.1.4版后,应用程序的所有链接都停止工作。这与CORS问题有关,因为当我在没有CDN的情况下部署时,一切都正常。

S3和Cloudfront都设置为接受CORS请求。

任何帮助都将不胜感激。

共有1个答案

长孙诚
2023-03-14

经过大量研究,我发现了以下Nextjs prop,它可以确保所有标签都具有inter-source属性。

// next.config.js
module.exports = {
  crossOrigin: 'anonymous'
}

此外,请确保将S3 CORS权限设置为:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

并将Cloudfront行为设置添加到以下标题的白名单中:(在行为下)-

Access-Control-Request-Headers
Access-Control-Request-Method
Origin

功能博客帖子:https://nextjs.org/blog/next-8#new-交叉原点配置选项

关于此主题的有趣讨论:缓存对CORS的影响:请求的资源上不存在“Access Control Allow Origin”标头

 类似资料:
  • 静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库 动态链接方法:使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这

  • 在编译Linux程序时,我们经常会看到动态链接和静态链接这两个术语。这两个术语中是我Linux的共享函数库(shared libraries)相关的。共享函数库就象Windows系统里的.dll文件,它里面包含有很多程序常用的函数。为了方便程序开发和减少程序的冗余,程序当中就不用包含每个常用函数的拷贝,只是在需要时调用系统中共享函数库中常函数功能即可。这种方式我们称之为动态链接(Dynamical

  • 问题内容: 是否可以使用静态类将静态方法链接在一起?说我想做这样的事情: 。。。并且显然我希望将$ value分配给数字14。这可能吗? 更新 :它不起作用(您不能返回“自我”-它不是实例!),但这就是我的想法带给我的地方: 解决了这些问题之后,我认为仅使用类实例而不是尝试链接静态函数调用(这似乎不太可能,除非可以对上述示例进行一些调整)才有意义。 问题答案: 我喜欢上面Camilo提供的解决方案

  • 问题内容: 如何在Flask中使用引用文件夹中的文件?例如,我的文件夹中有一些静态文件,其中一些可能位于子文件夹中。 当我尝试从提供文件时static/bootstrap,出现错误。 我可以使用此功能来引用不在子文件夹中的文件。 引用静态文件的正确方法是什么url_for?如何使用url_for任何级别的静态文件生成URL? 问题答案: 默认情况下,你具有静态文件的端点。还应用有以下参数: :可用

  • 问题内容: 在过去的几年中,我安装了许多具有各种Python版本的Python库。为了使它们可以立即工作,我在不受控制的情况下盲目安装了它们。目前,当我尝试安装调用numpy,scipy和matplotlib的pynest时,它们正在引起问题。经过努力后,我将清理并重新安装Python和库。 经过调查,我在系统上发现Python 2.5 / 2.6 / 2.7 / 3.2,并且每个系统都有以下副本