相关疑难解决方法(0)

Internet Explorer 11不会在CORS请求中添加Origin标头?

我的问题取决于我认为的几个假设.

假设nr 1:原始标题

Origin头是由浏览器需要在CORS(跨源资源共享)请求被投入.

维基百科:

要启动跨源请求,浏览器会使用Origin HTTP标头发送请求.

HTML5岩石:

首先要注意的是,有效的CORS请求始终包含Origin头.此Origin标头由浏览器添加,不能由用户控制.

W3:

如果请求URL源与原始URL源不同,请将源origin设置为全局唯一标识符[..].

假设2:Internet Explorer 10+支持CORS

请参阅caniuse.com并使用谷歌获取数百种不同类型的来源声称支持.

假设nr 3:不同的端口是不同的起源

使用不同端口号的资源被认为具有不同的来源:

维基百科

当且仅当所有这些值完全相同时,才认为两个资源具有相同的来源.[..]失败 - 相同的协议和主机但不同的端口.

Mozilla开发者网络

如果协议,端口(如果指定了一个端口)和主机对两个页面都相同,则两个页面具有相同的原点.

问题:

Origin在向同一域"localhost"发出CORS请求但使用不同端口(从8411到8080)时,Internet Explorer 11不会发送标头.Opera,FireFox和Chrome会发送Origin标头.然而每个人都在说Internet Explorer 10+支持CORS吗?

internet-explorer xmlhttprequest cross-domain cors

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

我可以为域及其子域中的所有页面设置Access-Control-Allow-Origin标头吗?

我正在尝试使用法律允许使用的webfont,但不要分发.我将字体文件托管在用于静态内容的单独域上.这两个域是不相关的(一个不是另一个的子域).假设使用webfont example.com的网站是托管它的网站example.net.

我在.htaccess文件中试过这个 example.net

<FilesMatch "\.(ttf|otf|eot|woff|svg)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "example.com"
  </IfModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

但是,这允许字体仅在主页上工作example.com.我再试一次:

    Header set Access-Control-Allow-Origin "example.com/*"
Run Code Online (Sandbox Code Playgroud)

现在字体可以在example.com 除主页之外的任何地方工作,这当然不是我想要的.

我找不到此标题的任何文档.我真正想要的是让所有网页example.comwww.example.com(或好措施,*.example.com).有一个简单的方法吗?我猜这个标题需要某种正则表达式.

寻找我发现的文档,

  • 关于此标头如何与ajax交互的很多内容,
  • 很多简短的说明说它对于webfonts是必要的(至少在Firefox中).

我没有找到任何关于标头本身语法的文档,或者如何指定域的变体.

根据相关问题的答案,我试过这个:

<FilesMatch "\.(ttf|otf|eot|woff|svg)$">
    <IfModule mod_headers.c>
        SetEnvIf Origin "http(s)?://(www\.)?(example.com)$" AccessControlAllowOrigin=$0$1
        Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
        Header set Access-Control-Allow-Credentials true
    </IfModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

我的理解是,这将为每个请求设置一个单独的标题,允许每个请求页面单独使用该字体.但是,使用Firebug进行检查时,http://example.com主页和其他地方的标题始终如此.尽管如此,这仍然有效,但令我感到困惑.一个相关的问题表明,类似的设置不适用于其他人.他的问题表明,对于他来说,它实际上为每个请求页面发送一个不同的标题,HTTP 304 Not Modified因此响应正在破坏.他的解决方案是添加一个always指令.htaccess …

cross-domain webfonts http-headers

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