对于我们的一个ajax请求(带有.json响应),我们的一些客户抱怨他们看到"文件下载"提示要求用户下载.json响应.我感到困惑,因为考虑到这是一个xhr响应,这应该永远不会发生.有没有人见过这个?
谢谢
我使用页面获取脚本动态地将网页加载到div中.继承人的代码.BTW Im使用Firefox w/Kubuntu
function fetch(URL, divId) {
req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
req.open("GET", URL);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
document.getElementById(divId).innerHTML = req.responseText;
}
}
req.send(null);
}
Run Code Online (Sandbox Code Playgroud)
当我试图让它加载页面没有任何反应,我得到一个错误
错误:文档元素之后的垃圾
源文件:file:///home/amnite/Stuff/MetalBraska/Shows/ContentRight.html
行:2,列:1
源代码:
<img src="Layout/HeaderDiv.jpg" width="250px" height="7px">
在我的Chrome扩展程序中,我想让我的options.html页面与Google的OpenId API进行通信.为了无缝地执行此操作,我iframe在选项页面上隐藏了一个弹出Google帐户登录页面(按照OpenId交互顺序等).
我的问题是我无法通过选项页面与iframe(iframe我控制的内容,但与我的chrome扩展名不同)进行通信window.postMessage.我想知道这个问题是否有快速的解决方法.
如果没有,我将options.html包含一个包含iframe页面布局和逻辑的内容.
javascript google-chrome xmlhttprequest cross-domain google-chrome-extension
我想我误解了用xmlhttprequest管理cookies.我有一个响应的服务器XMLHttpRequest在JavaScript做,我的服务器返回Allow-Control-Access-Origin,Access-Control-Allow-Headers,Access-Control-Expose-Headers并Access-Control-Allow-Credentials用正确的值标题.
我正在使用javascript在服务器上进行摘要身份验证,没有问题,我收到WWW-Authenticate来自服务器的标题,我处理并向服务器发送带有所有摘要响应的授权标头,一切正常.问题是,当摘要挑战成功时,我的服务器返回一个Set-Cookie标头,我必须得到它并添加到我的所有xhr请求的其余部分.浏览器(使用Chromium和Chrome)不允许我访问标题:
xhr.getResponseHeader("Set-Cookie");
Run Code Online (Sandbox Code Playgroud)
好吧,在XMLHTTPREQUEST Level 2中它说:"返回响应中的所有头文件,除了那些字段名称为Set-Cookie或Set-Cookie2的头文件"好的,所以我不能接受它,但有什么办法?使用Chrome Api进行Cookie(目前我还没有注意到它的注意事项),但我希望以标准的方式做到可行.随着:
xhr.withCredentials = true;
Run Code Online (Sandbox Code Playgroud)
意味着浏览器自动获取set-cookie并发送cookie头?
我正在尝试编写一个Excel加载项,可以将Web服务中的数据导入Excel.
要使用它,用户只需键入加载项提供的函数名称即可.我在VBA中发现了两篇实现HTTP请求的文章:XMLHTTP和ServerXMLHTTP.
我使用它们有困难.我不知道使用哪一个.XMLHTTP和ServerXMLHTTP之间有什么区别?
在我的ng-resource文件中,我启用了ajax标头:
var app = angular.module('custom_resource', ['ngResource'])
app.config(['$httpProvider', function($httpProvider) {
//enable XMLHttpRequest, to indicate it's ajax request
//Note: this disables CORS
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}])
app.factory('Article', ['$resource', function($resource) {
return $resource('/article/api/:articleId', {articleId: '@_id'}, {
update: {method: 'PUT'},
query: {method: 'GET', isArray: true}
})
}])
Run Code Online (Sandbox Code Playgroud)
这样我就可以相应地分离ajax和非ajax请求和响应(发送json数据res.json(data),或者像发送整个html页面一样res.render('a.html')
例如,在我的错误处理程序中,我需要决定呈现error.html页面或只发送错误消息:
exports.finalHandler = function(err, req, res, next) {
res.status(err.status || 500)
var errorMessage = helper.isProduction() ? '' : (err.message || 'unknown error')
if (req.xhr) {
res.json({message: errorMessage})
}
else {
res.render(dir.error + '/error_page.ejs') …Run Code Online (Sandbox Code Playgroud) 我正在制作一个Chrome扩展程序,用于从我自己的服务器中提取数据.它一次使用大约4个httpRequests,但有时我会得到如下控制台错误:
XMLHttpRequest cannot load http://apps.radionsm.lv/apps/system/index.php?request=now. Origin chrome-extension://egkddfmbidfobhchndockbhjancbpfkd is not allowed by Access-Control-Allow-Origin. 对于每个人有时没有.
如果我发送header('Access-Control-Allow-Origin: *');将修复它吗?
W3C是否指定XMLHttpRequest可以设置哪些HTTP头?如果是这样,他们是否出于安全原因发布了证明这些要求的文件?
是否由浏览器自行决定限制HTTP标头?如果是这样,是否有在线文档或文档集合列出了不同XHR实现的怪癖,或者是否有必要在每个实现的文档中找到该信息?
最近我一直在玩AngularJS和Java EE 6.我在Jersey上构建了一个Web服务,并在Glassfish上部署了该项目.因为我需要某种身份验证和OAuth实现或者JDBCRealm看起来有点过分,所以我决定只在用户成功登录时创建一个会话.
@POST
@Path("/login")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public Response login(LoginDAO loginData, @Context HttpServletRequest req) {
req.getSession().invalidate();
loginData.setPassword(PasswordGenerator.hash(loginData.getPassword()));
User foundUser = database.login(loginData);
if(foundUser == null) {
return Response.status(Status.CONFLICT).build();
}
req.getSession(true).setAttribute("username", foundUser.getUsername());
return Response.ok().build();
}
@GET
@Path("/ping")
public Response ping(@Context HttpServletRequest req) {
if(req.getSession().getAttribute("username") == null) {
return Response.ok("no session with an username attribute has been set").build();
}
return Response.ok(req.getSession(true).getAttribute("username")).build();
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,如果我从Postman发布/登录或从glassfish上部署的基本jQuery网页发送,我确实得到了正确的用户名并且已经放置了会话.如果我然后发送一个GET请求到/ ping我确实得到了我登录的用户名.
我在一个需要登录的node.js网络服务器上部署了一个AngularJS应用程序.因为这个服务器在另一个端口上,它在另一个域上,我不得不经历启用cors的痛苦.我这样做是通过构建一个容器响应过滤器来设置响应头.
public class CrossOriginResourceSharingFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest creq, ContainerResponse cresp) {
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "http://localhost:8000");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true"); …Run Code Online (Sandbox Code Playgroud) 如何设置withCredentials=true到 fetch其回报的承诺.以下是正确的:
fetch(url,{
method:'post',
headers,
withCredentials: true
});
Run Code Online (Sandbox Code Playgroud)
我认为MDN文档谈到了关于http请求的所有内容,除非这一点:withCredentials
xmlhttprequest ×10
javascript ×5
ajax ×2
angularjs ×2
cors ×2
cookies ×1
cross-domain ×1
download ×1
ecmascript-6 ×1
excel ×1
excel-vba ×1
express ×1
fetch-api ×1
http ×1
http-headers ×1
innerhtml ×1
java-ee-6 ×1
jersey ×1
json ×1
node.js ×1
php ×1
prompt ×1
setcookie ×1
vba ×1