【发布时间】:2017-10-15 06:35:27
【问题描述】:
我需要允许访问我网站的某个页面以接受来自其他网站的跨域请求。
我知道这种技术是 Cross Origin 或 Cross Domain 或 CORS(Cross-Origin Resource Sharing),我见过几个主题说吧:
How to call a page from another domain to my domain using ajax/javascript
How does Access-Control-Allow-Origin header work?
https://www.html5rocks.com/en/tutorials/cors/
但我不知道如何配置我的网站以允许跨域查询。
信息:需要访问我的网站不使用浏览器扩展,所以我必须练习跨域。
问题:
1. 如何配置Access-Control-Allow-Origin 标头?我的网站是Java-EE、JSF 和Spring。
2.我找到了两种解决方案,可以让外部网站拥有我的页面内容:
-
A) 第一个解决方案是使用 javascript 脚本生成指向我的页面的链接。然后,外部站点必须在其页面中包含此链接以显示我的页面内容。 (我应该还有
Access-Control-Allow-Origin吗?)
例子
<script>
(function (w,i,d,g,e,t,s)
w[d] = w[d]||[];
t= i.createElement(g);
t.async=1;
t.src=e;
s=i.getElementsByTagName(g)[0];
s.parentNode.insertBefore(t, s);
})(window, document,'_gscq','script','//widgets.getsitecontrol.com/42540/script.js');
</script>
-
B) 第二种解决方案是外部站点使用
XMLHttpRequest或AJAX请求来加载我站点的页面: Embed an External Page Without an Iframe?最佳解决方案是什么(A 或 B)?页面内容会静态加载吗?
3. 站点配置中是否有文件允许我授权或禁止站点(域)访问我站点的页面? Access-Control-Allow-Origin Multiple Origin Domains?
例子
my_page_1.html: // Page of my site
// Authorize sites to make a cross domain query
external_site_1.com
external_site_2.com
external_site_3.com
my_page_2.html: // Page of my site
// Authorize sites to make a cross domain query
external_site_1.com
my_page_3.html: // Page of my site
// Authorize sites to make a cross domain query
external_site_1.com
external_site_3.com
提前感谢您的回答。
【问题讨论】:
-
我认为这与 spring 或 jsf 没有任何关系......我相信它是您需要在服务器/应用程序中设置的配置。您使用的是 spring,所以假设您使用的是 tomcat:Enable CORS on tomcat
-
对于配置,它看起来是一个不错的解决方案。
<url-pattern> / * </ url-pattern>是否允许我在不同页面而不是整个站点上定义Access-Control-Allow-Origin还有待观察。我认为它必须是可行的。谢谢你。我还应该知道我应该使用解决方案 A 还是 B。一个想法? -
我看了,但我不知道通过请求和最少的操作将我的页面(站点 1)的内容发送到另一个站点(站点 2)的页面的最佳方式是什么网站 2 的份额
标签: javascript spring jakarta-ee cors cross-domain