网页是https,调用的也是https,但是就是说混合模式,网上查了,这错误的意思就是https调用了http的资源导致。可是我并没有啊。
var url = "../api/Custom/Get?callback=?";
接口本来是这样写的,没有标记https还是http,那么默认是跟随当前的网址的。 我为了验证下特地改成完整路径。
var url = "www.aaatestbbb.com/api/Custom/…?";
结果报同样的错误。然后我发现右侧确实有http的影子。
这是什么情况?无中生s啊?!我开始怀疑是https部署有问题。因为服务器为了支持多个网站可以用https,用的什么Nginx反向代理的方式,而不是在iis绑定域名那儿设置的,具体是用的西数的“网站管理助手”这个软件,会不会“反”错了。于是向西数的技术反馈。
技术说是这行的问题,注释掉就正常了,上面图中的文件是用Nginx设置https自动生成的.conf配置文件,每个域名会生成一个。我就疑惑了为什么同服务器上其他https网站不这样改就没事呢?
后来就我就开始琢磨找这两个站的差异,最终发现。没问题的站点是这样写的接口:
var url = "../api/json_xxx.asp?callback=?"; 也就是写完整路径的。于是我把本来的:
var url = "../api/Custom/Get?callback=?"; 修改为:
var url = "../api/Custom/Get/index.asp?callback=?"; 测试了下果然好了!我猜测西数的技术那方法可能只是歪打正着。。
我就猜测应该是没在url中写文件名,服务器就自动自动“跳转”寻找存在的默认首页,然后以http响应了?而Nginx根本不知道这情况?事实证明并不是这样的。因为后来继续试验发现:
var url = "../api/Custom/Get?callback=?"; 会报错
var url = "../api/Custom/Get/?callback=?"; 正确
竟然跟斜杠有关系。不加斜杠它就抽风。不知道iis内部机制,也不知道是Nginx的问题还是iis的问题。我只能探索到这了,如果有了解的同学继续探究,有成果了在下面留言,你们可以站在巨无人耻的肩膀上走的更远(摔得更惨),哈哈!