甚么是布吕马?
布吕马,指的是应用程序无法继续执行其它中文网站的JAVA。它是由应用程序的相混思路导致的,是应用程序施予的安全可靠管制。
简而言之相混是指,搜索引擎,协定,路由器均完全相同,不知道说实话,举个红豆:
http://www.123.com/index.html 初始化 http://www.123.com/server.php (非布吕马)
http://www.123.com/index.html 初始化 http://www.456.com/server.php (主搜索引擎完全相同:123/456,布吕马)
http://abc.123.com/index.html 初始化 http://def.123.com/server.php(子搜索引擎完全相同:abc/def,布吕马)
http://www.123.com:8080/index.html 初始化 http://www.123.com:8081/server.php (路由器完全相同:8080/8081,布吕马)
http://www.123.com/index.html 初始化 https://www.123.com/server.php (协定完全相同:http/https,布吕马)
请注意:localhost和127.0.0.1虽然都指向本机,但也属于布吕马。
应用程序继续执行javascriptJAVA时,会检查这个JAVA属于哪个页面,如果不是相混页面,就不会被继续执行。
化解办法:
1、JSONP:
使用方式就不赘述了,但是要注意JSONP只支持GET请求,不支持POST请求。
2、代理:
例如http://www.123.com/index.html需要初始化http://www.456.com/server.php,可以写一个接口http://www.123.com/server.php,由这个接口在后端去初始化http://www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了应用程序端,自然就不存在布吕马难题。
3、PHP端修改header(XHR2方式)
在php接口JAVA中加入以下两句即可:
header(Access-Control-Allow-Origin:*);//允
header(Access-Control-Allow-Method:POST,GET);//允许访问的方式