SSL CORS与Zend Guard不兼容
我已经将所有内容添加到我的Apache htaccess中:
头设置Access-Control-Allow-Headers:X-Requested-With Header set Access-Control-Allow-Methods:OPTIONS Header add Access-Control-Allow-Methods:GET Header add Access-Control-Allow-Methods:POST Header add Access-Control-Allow-Headers:Content-Type Header添加Access-Control-Allow-Headers:Depth Header添加Access-Control-Allow-Headers:User-Agent Header添加Access-Control-Allow-Headers:X-File-Size标题添加Access-Control-Allow-Headers:X-Requested-With Header添加Access-Control-Allow-Headers:If-Modified-Since Header添加Access-Control-Allow-Headers:X-File-Name Header添加Access-Control -Allow-Headers:Cache-Control Header set Access-Control-Allow-Origin:http://mysite.com Header add Access-Control-Allow-Origin:https://mysite.com Header set Access-Control-Allow-凭证:是的
我把它添加到我的jquery $ .ajax:
xhrFields:{ withCredentials:是的 }
绝对没有用。
我正在做$ .ajax
输入:'POST', dataType:'json'
我想通过设置上面的所有标题,我可以做json而不是jsonp(请不要jsonp。除了jsonp之外的任何东西。我无法成功解雇。please.god.no)
我在极限。 我得到了好东西
XMLHttpRequest无法加载https://mysite.com/aDirectory/aSecureFile.php 。 Access-Control-Allow-Origin不允许使用Origin http://mysite.com 。
请帮忙。 我在这里死了。 我保证我到处都是,哦,我到处都看。
提前谢谢了!
明晰
我的标题都出现了。 我可以在我的响应标题中看到它们,但我仍然遇到上述错误。 服务器阻塞了吗? 浏览器? 有什么特别的事我要做https吗? Apache上还有其他设置我必须设置为允许CORS吗? 我的jQuery $ .ajax是否正确? 除了数据和成功与错误(以及URL始终为https)之外,这就是我对jQuery $ .ajax所做的一切。
再次感谢!
新
跨域AJAX预检失败原点检查没有帮助(我不认为)。 添加
标题集Access-Control-Allow-Headers:ORIGINS
(调整集合和添加)。 所有响应标题都在管道下方。
新
添加了这些
标题添加Access-Control-Allow-Headers:Origin 标题添加Access-Control-Allow-Headers:Accept
依然没有
请求标题
这些有帮助吗?
接受:application / json,text / javascript, / ; Q = 0.01 内容类型:应用/ X WWW的窗体-urlencoded; 字符集= UTF-8 来源: http : //mysite.com 推荐人: http : //mysite.com/ User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.11(KHTML,类似Gecko)Chrome / 23.0.1271.64 Safari / 537.11
PHP
标题(“Access-Control-Allow-Origin:http://mysite.com”); 标题(“Access-Control-Allow-Origin:https://mysite.com”);
响应标题清晰度
RESPONSE HEADERS正在通过所有正常请求而不是跨域https ajax。
服务器
CentOS 5.8,Apache 2.2.2,PHP 5.3,cPanel,WHM
很好,如果PHP没有执行
所以,在我的匆忙中,我直接复制了slashingweapon的cors.php,没有php标签。 我使用上面的设置用$ .ajax创建了一个测试页面。
它工作(因为在ajax启动时没有错误)完成响应头。 一旦我将标签添加到PHP,就会发生错误。 我检查了它是否是一个目录问题,将它放在root和子目录中,只要PHP没有执行就好了。
这对任何人都意味着什么?
是否需要翻转PHP设置?
感谢大家和我一起磨练这个!
我们有一个心跳
看起来htacess中的多个参数会破坏我的服务器。 我将上面的所有选项都减少到了这个(这对我来说很好,但我可怜的傻瓜谁需要更多):
Header set Access-Control-Allow-Origin: http://mysite.com Header add Access-Control-Allow-Methods: POST
我放入PHP的所有内容都是
回声“这至少起作用”:
响应就出现了。 一旦我弄清楚导致我的PHP失败的原因,我就会发布它。
再次,谢谢大家!
Zend Guard这个问题?
Sooooooooo,对不起伙计们。 忘了添加我的网站运行Zend Guard。 有一种感觉导致它。
当客户端尝试执行CORS请求时,它首先发送“预检”请求以确保服务器支持CORS。 如果预检请求通过,则将发送实际请求。
您的服务器需要向CORS请求发送正确的响应。 我有一个CORS PHP要点,说明如何执行此操作。
首先,您需要确保启用mod_headers
a2enmod headers
然后,作为测试,您可以在.htaccess文件中将原点设置为通配符
Header set Access-Control-Allow-Origin *
我看到有和没有冒号的文档(:)我现在没有系统可以测试,所以你也可以玩它。
当然在启用标题后,您需要反弹apache。