没有'Access-Control-Allow-Origin'错误但是渲染了图像

时间:2016-10-16 16:43:38

标签: twitter-bootstrap google-chrome xmlhttprequest cors bootstrap-modal

我的项目托管在本地网络服务器上。

情景A

当我尝试通过doLast访问我的test.html文件时,它会给我

  

XMLHttpRequest无法加载   http://127.0.0.1:8887/images/main/2.jpg。没有   'Access-Control-Allow-Origin'标题是test.html:1出现在   请求的资源。因此不允许原点'null'访问。

在Chrome控制台中

但照片在模态中正确呈现

情景B

但是当我尝试通过file://访问test.html时,它不记录任何控制台错误并打印

  

JFIFPhotoshop   3.08BIM} 720120601< 130528-0500ZBaltimore_ MD - MarylandeUSA - 美国detbal-crime2 PKarl Merton   FerronUBaltimore Sun Staffn Baltimore SunsNA.1zNA.1xbA   巴尔的摩警察在现场站在犯罪现场磁带后面   警方在一起入室盗窃案后发生枪击事件   据报道,东南部的S. Chester Street和Bank Street附近有所进展   巴尔的摩。一名嫌疑人被枪杀,另一名被逮捕   调查人员通过证据。 (Karl Merton Ferron /巴尔的摩   太阳)iPOLICE参与其中   SHOOTINGgBAL12060115170484200:0:0:-00001   8BIM 8BIM hhttp://ns.adobe.com/xap/1.0/巴尔的摩MD -   美国马里兰州 - 美国巴尔的摩太阳职员巴尔的摩太阳队NA.1   NA.1涉及的警察拍摄BAL1206011517048420   2012-06-01T13:05:28-05:00巴尔的摩警察站在后面   犯罪现场录像带现场警方参与枪击事件   在S. Chester街附近报道了一起正在进行的入室盗窃案   和银行S

而不是在模态中渲染图像。

我实际上并不了解发生了什么。我正在尝试使用bootstrap调试我的gallery viewer jQuery插件。正确渲染图像仅在方案A中使用chrome进行。

其他调查结果:

  • 未使用bootstrap css时,图像正确呈现

HTML(场景A)

http://127.0.0.1:8887

我需要修复此图像渲染。如果我知道谷歌浏览器管理如何呈现图像尽管有警告,这将有助于

1 个答案:

答案 0 :(得分:6)

方案A错误似乎是由于您在没有发送正确的CORS标头(客户端和服务器端)的情况下对映像执行跨域http请求。如果您的网站也托管在该本地地址和端口,我会将图片网址设置为/demo/images/main/1.jpg,因为这样可以确保他们使用您用来访问您网站的相同域名和方案。控制台抛出的错误告诉您图像请求是使用Origin null标头创建的,但是虽然收到了有效的响应但它没有包含Access-Control-Allow-Origin响应带有值*null的标头。如果您控制服务器,则为该响应头提供*应该传递CORS。

如果您尝试直接导航到chrome中的图片路径,它是否有效http://127.0.0.1:8887/demo/images/thumbnail/1.jpg?如果没有,那么就没有希望它在img标签中工作。

如果您打开chrome dev工具并转到网络选项卡然后重新加载页面(启用保留日志复选框),您是否看到任何资源返回红色(非200/304状态代码)?如果是这样,调查这些请求的响应标头和内容可能会引导您回答。

情景a和b似乎是不同的问题。 B似乎您可能正在使用不正确的内容类型提供图像,或者您的模态CSS隐藏图像(不解释奇怪的警察文本来自哪里)。如果您可以修饰您使用服务器端打开端口并提供图像,我可能会提供更多帮助。如果这是在images目录中使用express和express.static的节点,只要你的路径排成一行,它就应该工作。

其他:

  1. 确保您的网页使用HTML5 doctype(引导程序要求) - <!DOCTYPE html>
  2. 尝试通过meta charset tag将HTML页面的内容类型设置为UTF8。