从CDN和本地请求javascript时不同的头

Different headers when requesting javascript from CDN vs locally

本文关键字:javascript 请求 CDN      更新时间:2023-09-26

我正在维护一个动态插入一些对话框的应用程序。这些对话框通常包含在对话框出现时加载的javascript,例如:

<script type="text/javascript" src="/js/charCount.js"></script>
<script>
$(function() {
    $('#container').charCount(function() {
      /* more code here */
    });
});

父页面已经加载了jquery,但是对话框添加了一个新的javascript,它是charCount,它为jquery添加了一个新方法。这工作得很好,然而,当我们移动到CDN所以charCount.js现在从那里加载,我得到Incaught TypeError: Object [object Object] has no method 'charCount'如果我在本地加载javascript,它工作得很好,没有任何问题。

我看到的唯一区别是如何javascript被请求。当它在本地加载时,请求头看起来像这样:

Accept:text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:__utma=201217592.1524881892.1360801695.1367952052.1367956136.78; __utmb=201217592.2.9.1367956140967; __utmc=201217592; __utmz=201217592.1366916286.66.12.ut$
Host:localhost
Pragma:no-cache
Referer:localhost
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31
X-Requested-With:XMLHttpRequest

当从CDN加载时,请求头看起来像这样:

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:__utma=201217592.1524881892.1360801695.1367952052.1367956136.78; __utmb=201217592.2.9.1367956140967; __utmc=201217592; __utmz=201217592.1366916286.66.12.
Host:<cdnurlhere>
Pragma:no-cache
Referer:localhost
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31

我看到您正在尝试使用ajax加载内容。它将无法工作,因为它违反了跨域请求策略。简单地说,跨域ajax请求是不允许的。