繁体   English   中英

如何判断是否从fetch()调用了页面?

[英]How to tell if page is being called from a fetch()?

使用jQuery,Ajax函数设置头部HTTP_X_REQUESTED_WITH ,因此使用PHP我可以:

if(filter_input(INPUT_SERVER, 'HTTP_X_REQUESTED_WITH') === 'XMLHttpRequest')
{ ... }

这将告诉我使用Ajax请求页面。

现在我想将Ajax函数更改为fetch() 我查看了它设置的默认标头,我找不到任何可以用来判断请求是否从fetch发送的内容。

我可以自己设置标题:

fetch('/get/login', {
    headers: {
        'X-Requested-With': 'fetch',
    },
})
.then(function(response) { ... }

然而,为每次提取写出那个标题并不理想。 我有什么选择? 有没有更好的方法来判断是否通过提取请求?

不,没有别的东西可以依靠。

从理论上讲,根据请求方法,您不应该为服务器提供不同的行为; 应该与系统后端定义的内容正交。

但是,如果你很绝望,我非常喜欢你现有的解决方案; 你可以将它包装在一个函数中以简洁起见。

由于您依靠客户端传递数据,您是否无法在体内传递POST变量? 通过javascript传递标题并不比简单地传递其他字段更安全。 https://davidwalsh.name/fetch

fetch('/get/login', {
    body: JSON.stringify({
        source: : "fetch"
    }),
})
.then(function(response) { ... }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM