尽管来源相同,XMLHttpRequest响应访问被拒绝
XMLHttpRequest response access denied despite same-origin
响应为JSON
Edge:有时会将响应属性值短暂插入DOM,然后将其删除,有时会记录错误"SCRIPT5:拒绝访问"(表示CORS),从调试器完全可以访问响应,请求显示在网络选项卡中
Chrome:响应为空字符串,请求未显示在网络选项卡中,没有控制台消息
Firefox:使用JSON.parse()中的响应,在断点行上出现控制台错误"response"畸形JSON",因此在使用之前,请求未显示在网络选项卡、Firebug和集成中
JS(仅限当前浏览器):
var session = "";
var request;
function checkLogin()
{
if(request.readyState > 3)
{
var response = JSON.parse(request.response);
if(verify(response)) // verify inserts argument property "error" in DOM on error via innerHTML on element
{
// do something
}
}
}
function login()
{
request = new XMLHttpRequest();
request.onreadystatechange = checkLogin;
request.open("GET", "authenticateUser.php?user=" + document.getElementById("user").value + "&credential="+md5(document.getElementById("password").value));
request.send();
}
来自网络选项卡的边缘请求:
Anforderungs-URL: http://*MYDOMAIN*/authenticateUser.php?user=df&credential=d41d8cd98f00b204e9800998ecf8427e
Anforderungsmethode: GET
Statuscode: 200 / OK
- Anforderungsheader
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: de-DE, de; q=0.8, en-US; q=0.5, en; q=0.3
Connection: Keep-Alive
Host: *MYDOMAIN*
Referer: http://*MYDOMAIN*/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
- Antwortheader
Connection: Keep-Alive
Content-Length: 65
Content-Type: application/json
Date: Sat, 21 Nov 2015 07:42:17 GMT
Keep-Alive: timeout=15, max=94
Server: Apache
X-Powered-By: PHP/5.5.29
响应:
{"success":false,"error":"authentication failed or unauthorised"}
是什么让php的响应可以在JS代码中使用(在Chrome和Firefox中),并且它的属性值可以插入DOM?
login()
是onsubmit
的处理程序。我没有return false
;因此,用户和pw来自的表单(没有任何操作)提交到自己的页面,并让浏览器重新加载页面:在Chrome和Ff中取消请求。只有Edge让相等的页面JS处理来自前一个加载请求的repsonse,直到它被插入。
我花了6个小时绕过JSONP和Charles,然后列出了请求后页面本身出现的Chrome的网络流量,从而让我有了页面"重新加载"的想法,并最终记住了onsubmit处理程序取消了提交,返回false,否则提交会导致加载操作(或self,如果没有),这就是这里发生的情况。
相关文章:
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Ajax响应转换
- 使Intro.js工具提示响应
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- 将高图饼图中的文本居中显示为响应
- Css转换没有响应
- Typescript angularjs$http获取响应类型(避免使用<any>)