我在代码中的响应中写了一个字体文件。响应代码工作正常。但是当我从其url调用该代码时,我收到以下错误: “跨源请求被阻止:同源策略不允许读取远程资源” 它会自动关闭我的服务器。
但有时相同的代码会起作用......但是最大的时间它不起作用。 我使用tomcat 7与netbeans 7和jdk1.6包 这是我的代码的一部分。 希望我得到我的答案,因为我真的很困惑要搜索什么。
File file = new File(SubsettedSavedPath);
byte[] buffer = new byte[(int)file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(buffer, 0, buffer.length);
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Access-Control- Allow-Origin,FTPConectionClosed,CopyStreamException,Access-Control-Allow-Methods,Access-Control-Max-Age");
response.setContentType("font/ttf");
System.out.println("File Size"+file.length());
response.setContentLength((int) file.length());
OutputStream os = response.getOutputStream();
try {
os.write(buffer);
os.flush();
} catch (Exception excp) {
excp.printStackTrace();
} finally {
os.close();
fis.close();
}
答案 0 :(得分:0)
尝试将Access-Control-Allow-Origin
用于具体域而不是*
。
答案 1 :(得分:0)
使用Access-Control-Allow-Origin
值等于请求的域名而不是*
。
String uri = request.getScheme()+ request.getServerName();
response.setHeader(" Access-Control-Allow-Origin",uri);
答案 2 :(得分:0)
Tomcat 7有一个用于设置cors过滤器的集成库。您无需导入任何库以便以下工作:
只需在web.xml中设置允许的'cors.allowed.origins'网站即可。您可以放置多个逗号分隔值。
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>http://www.the-target-domain.com</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在JavaScript中,我对“http://www.the-target-domain.com/ ...”进行了GET调用。
通过在web.xml配置中设置CorsFilter,我向Firefox保证JavaScript可以访问该站点。
PereBarceló有一个很好的答案,你可以直接在Apache Tomcat中设置http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter
类似的提示: Set CORS header in Tomcat Access-Control-Allow-Origin: * in tomcat