我有一台Apache服务器,我试图通过HTTPS发送请求,但我一直在努力解决跨源问题以及使用SSL的问题。
我不确定问题出在哪里,因为我似乎从网页控制台(使用Firefox + Chrome测试)获得有关失败请求的不同回复。在Chrome中,我只是看到作为POST发送的请求更改为OPTIONS,并注意到它失败了,没有其他更多。在Firefox中,我看到以下两个问题:
在控制台中,请求说由于CORS而失败:
阻止跨源请求:同源策略禁止在https://123.456.789.001读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。
但是,在网络选项卡中检查失败的请求会显示有关证书的以下问题:
123.456.789.001使用无效的安全证书。证书不受信任,因为它是自签名的。 (错误代码:sec_error_unknown_issuer)
挖掘之后,我遇到了确定实际导致请求失败的问题 - 这是因为我的CORS规则设置不正确吗?或者是因为我正在尝试向使用自签名证书的服务器发送请求,因此我的请求/浏览器不信任该请求?
我相信我的CORS设置正确,这里是我用来启用CORS的文件的内容:
的crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
htaccess的:
# Always set these headers.
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token, Access-Control-Allow-Origin, X-Frame-Options"
# Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
显然这些设置并不适合制作,但在花了好几个小时试图查明问题之后,我选择了一些在启用CORS方面限制最少的例子我希望看到请求通过然后再去返回并正确编辑它们。但是,我仍然在控制台中看到Cross Origin错误,这些更改已上传到Apache服务器(并且在文件更改后服务器重新启动)。
那么无论如何要判断CORS或自签名证书是否导致问题?我不一定要继续购买SSL证书,因为我还在开发中,我用来托管内容的网站被强制为https,所以我无法通过请求HTTP。