我想使用众所周知的字符串var mobile = /iPad|iPhone|iPod|android/.test(navigator.userAgent) && !window.MSStream;
if (mobile) {
$('body').on('touchstart click doubleclick keydown', function() {
$("audio[autoplay='autoplay']").each(
function(){
this.play();
this.removeAttribute('autoplay');
});
});
}
为ASP.NET Core中的所有JSON响应添加前缀,以防止XSSI攻击。 (有关详细信息,请参阅https://angular.io/docs/ts/latest/guide/security.html#!#xss。)
如何实现这一目标?我想我应该使用过滤器或中间件,但不能完全找到正确的方法。
答案 0 :(得分:3)
是的,可以使用中间件或类似下面的过滤器:
public class EditResponseFilter : Attribute, IAsyncResourceFilter
{
private const string _prefix = ")]}',\n";
public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
{
var originBody = context.HttpContext.Response.Body;
var newBody = new MemoryStream();
//Body replacement is needed to make the response stream readable
context.HttpContext.Response.Body = newBody;
await next();
newBody.Seek(0, SeekOrigin.Begin);
string json = new StreamReader(newBody).ReadToEnd();
context.HttpContext.Response.Body = originBody;
await context.HttpContext.Response.WriteAsync(_prefix + json);
}
}
答案 1 :(得分:0)
我希望有一个类似的东西,而不必在返回Json的api动作方法上放置属性。有没有办法检测我们是否返回json响应并放置前缀(或后缀)?