我想制作一个关于HTML/JS 同源政策的社区维基,希望能帮助任何人搜索这个主题.这是SO上搜索次数最多的主题之一,没有统一的wiki,所以我去:)
相同的源策略可防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性.此政策可以追溯到Netscape Navigator 2.0.
请保持示例详细,最好还链接您的来源.
有没有办法strict MIME type checking在Chrome中禁用.
实际上我正在跨域提出JSONP请求.它在Firefox上运行良好但是,使用chrome时它在控制台中给出了一些错误.
拒绝从' https://example.com ' 执行脚本,因为其MIME类型('text/plain')不可执行,并且启用了严格的MIME类型检查.
它在Mozilla中完美运行.问题仅出现在chrome中
以下是请求的响应标题..
Cache-Control:no-cache, no-store
Connection:Keep-Alive
Content-Length:29303
Content-Type:text/plain;charset=ISO-8859-1
Date: xxxx
Expires:-1
Keep-Alive:timeout=5
max-age:Thu, 01 Jan 1970 00:00:00 GMT
pragma:no-cache
Set-Cookie:xxxx
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
Run Code Online (Sandbox Code Playgroud)
解决方法我认为:外部设置内容类型为application/javascript
我一直在使用Google Feed API来加载RSS Feed,但看起来谷歌已经关闭了API.例如,当我尝试加载纽约时报RSS源时http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&q=http%3A%2F%2Frss.nytimes.com%2Fservices%2Fxml%2Frss%2Fnyt%2FHomePage.xml,我收到了以下回复:
{"responseData": null, "responseDetails": "This API is no longer available.", "responseStatus": 403}
Run Code Online (Sandbox Code Playgroud)
有没有可行的替代方案?
我正在尝试在我的Meteor/NodeJS网站上加载Twitter的跟踪像素.
他们提供的代码是:
!(function(e, t, n, s, u, a) {
e.twq ||
((s = e.twq = function() {
s.exe ? s.exe.apply(s, arguments) : s.queue.push(arguments);
}),
(s.version = "1.1"),
(s.queue = []),
(u = t.createElement(n)),
(u.async = !0),
(u.src = "//static.ads-twitter.com/uwt.js"),
(document.body.appendChild(u)));
})(window, document, "script");
twq("init", "MY-TRACKING-ID");
twq("track", "PageView");
Run Code Online (Sandbox Code Playgroud)
它加载正常,但在控制台中返回以下错误:
拒绝执行' https://analytics.twitter.com/i/adsct?p_id=Twitter ...'中的脚本,因为其MIME类型('text/html')不可执行,并且启用了严格的MIME类型检查.
这是完全相同的问题:https://twittercommunity.com/t/analytics-tracking-pixel-error-was-blocked-due-to-mime-type-mismatch-x-content-type-options-nosniff/ 83583/2,但是当该线程未解决时,他现在正在该网站上运行Twitter跟踪像素,这表明这是一个服务器配置问题.
查看代码,来自Twitter的这个uwt.js文件请求来自https://analytics.twitter.com/i/adsct的脚本,Chrome阻止其运行.
这个答案表明它是MIME类型配置问题(我正在运行Nginx)或标题问题,但删除X-Content-Type-Options: nosniff和重新启动Nginx没有任何效果.
知道如何修复或更好地排除故障吗?