我想要做的是在HTTP协议上有一个页面,将AJAX调用发送到同一个Web服务器,但使用HTTPS.请求页面和AJAX处理程序都在同一台服务器上,具有相同的域和端口.(即,唯一的区别是协议.)为了说明,
来自 http://www.example.com/index.php
触发对https://www.example.com/authenticate.php?user=123&password=456的jQuery AJAX调用
(我希望通过HTTPS传递密码,使其通过Internet加密.由于一些设计限制,我必须使用AJAX调用而不是重定向页面.)
我知道这里有一个CORS问题,因此我研究了一下,发现我实际上可以使用Access-Control-Allow-Origin标头来提供帮助.然后我在Apache的配置文件中设置以下内容,
Header set Access-Control-Allow-Origin *
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "content-type, accept"
Header set Access-Control-Max-Age 1000
Run Code Online (Sandbox Code Playgroud)
我可以看到,当浏览器从服务器请求资源时,可以看到标题.请求:
Accept */*
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Authorization Basic Y2FzZXRhZ3JhbWRldjpwYXNzd29yZGRldiE=
Cache-Control no-cache
Connection keep-alive
Cookie __utma=99230732.2019724749.1337107099.1337849971.1337856946.9; __utmz=99230732.1337107099.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=217650581.954519005.1337107174.1337772401.1337777327.5; __utmz=217650581.1337107174.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=99230732; PHPSESSID=m8lnqhqv2qa6f884a8um413n81
Host www.example.com
Pragma no-cache
Referer http://www.example.com/index.php
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0
Run Code Online (Sandbox Code Playgroud)
回答是这样的,
Accept-Ranges bytes
Access-Control-Allow-Head... content-type, accept
Access-Control-Allow-Meth... GET, POST, PUT, DELETE, …Run Code Online (Sandbox Code Playgroud)