小编Gyu*_*Fox的帖子

X-P2P-PeerDist标题:它来自哪里?

我在对服务器发出的一些请求中看到了这个HTTP标头:

X-P2P-PeerDist: Version=1.0
Run Code Online (Sandbox Code Playgroud)

我知道这个:http://www.faqs.org/patents/app/20110016220#ixzz3g3X8lSYF,但我想知道发送该标头的已知客户端是什么.

任何的想法?

更新:根据要求,我包括随请求发送的其他标头(我已经混淆了一些与我们的客户有关的私人资料***):

GET http://***.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Connection: Keep-Alive
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/7.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; .NET4.0E)
X-P2P-PeerDist: Version=1.0
UA-CPU: AMD64
Accept-Encoding: gzip, deflate, peerdist
Host: ***.com
Cookie: SMSESSION=***; OrgName=***; authCookie=***; ASP.NET_SessionId=***
Pragma: no-cache
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)

用户代理似乎Trident/在IE7模式(compatible; MSIE 7.0)中指示IE11(),但是当我使用此配置时,我没有得到X-P2P-PeerDist头,所以我认为它不直接相关.

http-headers

9
推荐指数
1
解决办法
3271
查看次数

在尝试上传使用Visual Studio for Apache Cordova构建的应用程序时出现错误ITMS-90161

我们刚刚开始使用"用于Apache Cordova的Visual Studio工具"创建跨平台移动应用程序.

我按照安装工具为iOS构建中描述的过程和在iOS设备上运行您的应用程序.一切运行良好,应用程序部署在我的USB连接iPhone上,并按预期运行.

然后我尝试将应用程序上传到iTunes,通过TestFlight向测试人员提供应用程序,并通常了解应用程序提交的工作原理:

  1. 在VS中将iOS应用程序构建为"Release":它可以很好地构建和部署到iPhone
  2. 在Mac上:启动Application Loader,单击"Deliver your App"并导航到"... remote-builds/builds /"xxx-buildnmb"/cordovaApp/plattforms/iOS/build/device/APPNAME.ipa"
  3. 几个检查运行正常("验证资产等"),然后它会因错误而停止

    错误ITMS-90161:"无效的供应配置文件.包xxx.yyyyyy.zzzz [Payload/xxx.yyyyyy.zzzz.app]中包含的供应配置文件无效.[缺少代码签名证书.]有关详细信息,请访问iOS开发者门户网站."

  4. 然后我在".taco_home/remote-builds/taco-remote/builds/<build-number>/cordovaApp/platform s/ios /"中发现了Xcode项目,并使用Xcode在"Build Settings"中定义了代码签名标识"和"常规"中的团队信息,通过产品 - >存档创建存档,并在管理器 - 档案中提交.瞧它工作了!

我的问题:

  1. 我必须使用Xcode提交吗?
  2. 如果没有,我可能会忘记a)关于使用vs-mda-remote构建和签署应用程序,以及b)使用Application Loader提交它?
  3. Microsoft在Visual Studio中提供访问构建设置的计划是什么(类似于Xcode中的那些)?

非常感谢任何指向正确方向的指针.

托马斯

visual-studio-cordova

8
推荐指数
1
解决办法
5863
查看次数

SameSite cookie、框架、子域和重定向

SameSiteCookies的概念绝对是一个难以掌握的...

为了准备Chrome 80的更改,我正在尝试衡量缺少SameSite属性对我的 cookie 的影响。我有以下配置:

  1. 用户最初访问main.mysite.com
  2. main.mysite.com设置SomeCookie ( Set-Cookie: SomeCookie=value; path=/; secure; httponly) 并重定向到auth.mysite.com
  3. 用户在auth.mysite.com 上进行身份验证并重定向回main.mysite.com(POST 请求)

因为main.mysite.comauth.mysite.com之间的重定向被认为是同一个站点,并且因为Chrome 80将缺少SameSite属性视为SameSite=Lax,所以这很好用。

但是,当main.mysite.com嵌入在另一个站点(例如othersite.com)上托管的页面上的框架中时,SomeCookie不会在第 3 步发送回main.mysite.com

显示问题发生的插图

这是正常的吗?为什么?

cookies google-chrome samesite

8
推荐指数
1
解决办法
8297
查看次数

如何从元素中获取应用的样式,不包括默认的用户代理样式

如何在JavaScript中检索已应用于元素的样式,不包括默认的用户代理样式(仅限内联+样式表样式).

基本上,您可以在您最喜欢的开发人员工具的Computed选项卡中看到所有用户样式:

Edge的开发人员工具中显示的用户样式

没有框架,IE8 +,Edge,Chrome和Firefox.

我希望答案是getComputedStyle减去getDefaultComputedStyle的结果,但是以跨浏览器的方式.看到所有开发人员工具都能够做到这一点,必须有一个解决方案:)

html javascript css

7
推荐指数
2
解决办法
1308
查看次数

如何访问不转发ref的第三方组件的DOM元素

我正在使用一个第三方组件,该组件不会将引用转发到其 DOM 组件,不幸的是,我需要在代码中获取对其 DOM 元素的引用。

下面的代码显然失败了:

const ThirdPartyComponent = (props) => {
  return <div>I'm a third party component</div>;
};

const MyComponent = () => {
  const ref = useRef();

  return <ThirdPartyComponent ref={ref} />;
};
Run Code Online (Sandbox Code Playgroud)

“无法给函数组件提供引用。尝试访问此引用将失败。您是否打算使用 React.forwardRef() ?”

请参阅此处的代码和框

是否有办法获取第三方组件内 DOM 元素的引用?我知道已弃用的 findDOMNode API。我不太热衷于它,但尽管如此,我还是没能让它发挥作用。

注意:我知道我所要求的并不被认为是好的做法。我这样做的原因是让react-beautiful-dnd与DevExtreme的Reactive Grid一起工作。Draggable组件需要对可拖动元素的引用(<tr>这里的 s,我没有)。只是想简化问题。

reactjs devextreme react-beautiful-dnd react-functional-component

7
推荐指数
0
解决办法
635
查看次数

JavaScript"Counter"对象,它是什么?

我只是偶然注意到WebKit和Firefox在窗口中定义了一个名为"Counter"的全局变量.知道这是什么吗?

在Chrome上,它在手表中显示如下:

Counter: function Counter() { [native code] }
Run Code Online (Sandbox Code Playgroud)

注意:此变量在IE上不存在(使用版本10测试)

html javascript firefox webkit

6
推荐指数
1
解决办法
1300
查看次数

单击Chrome时,链接无法获得焦点

我在Chrome上遇到了一个非常奇怪的行为,这对我来说似乎是个错误:当您点击链接时,该链接无法获得焦点.更糟糕的是,身体取而代之的是焦点.

这种行为可以在这里观察到:http://jsfiddle.net/YfbR7/4/(see code sample here)

这是一个错误吗?这是标准行为吗?是否有任何解决方法使链接能够像其他浏览器一样专注于鼠标按下?

javascript google-chrome focus

6
推荐指数
1
解决办法
1587
查看次数

“formnovalidate”在 Chrome 上不起作用

出于某种原因,即使提交按钮具有属性,Chrome 似乎也会验证必填字段formnovalidate

http://jsfiddle.net/4LA9e/

<form>
  Required field: <input type="text" required />
  <input type="submit" formnovalidate value="do not validate" />
</form>
Run Code Online (Sandbox Code Playgroud)

单击“不验证”按钮仍会验证文本字段(在 Chrome 30.0.1599.69 m 上测试)。

有什么我做错了吗?这是一个错误吗?任何解决方法?

html forms google-chrome required-field

5
推荐指数
1
解决办法
3757
查看次数

如何在构建时缩小(并且只有它们)更改的JavaScript文件(在将"ItemGroup"添加到csproj之后也称为重复项目)

我已经将以下代码添加到我的.csproj中,以便缩小构建项目时已更改的JS文件:

<Target Name="BeforeBuild">
  <MSBuild Targets="CheckAndMinifyJS" Projects="$(MSBuildProjectFile)" />
</Target>
<ItemGroup>
  <JS Include="$(ProjectDir)\**\*.js" />
</ItemGroup>
<Target Name="CheckAndMinifyJS" Inputs="@(JS)" Outputs="@(JS->'$(ProjectDir)%(RecursiveDir)%(Filename).min.js')">
  <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" />
</Target>
<UsingTask TaskName="AjaxMin" AssemblyFile="..\..\ThirdParty\AjaxMinTask.dll" />
Run Code Online (Sandbox Code Playgroud)

这很有效,但它有副作用:当您在Visual Studio(2015)中查看项目时,所有JS文件都显示重复(相同的路径,但不同的构建操作):

重复的项目

我想避免在项目中出现带有"JS"构建操作的项目.我怎样才能做到这一点?

请注意,几个开发人员正在使用该项目,因此任何建议的解决方案都应包含在.csproj或解决方案中(例如:要求所有开发人员修改其注册表以更改JS文件的默认构建操作是不可接受的).

msbuild csproj buildaction visual-studio

5
推荐指数
1
解决办法
596
查看次数

Edge的App_Browsers定义文件

我正在尝试为Asp.Net中的Edge编写一个浏览器定义文件,以避免将其标识为"Chrome 46".

我在Edge.browser文件App_Browsers夹中创建了以下文件:

<browsers>
  <!--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-->      
  <browser id="Edge" parentID="Chrome">
    <identification>
      <userAgent match="Edge" />
    </identification>
    <capture>
      <userAgent match="Edge/(?'version'(?'major'\d+)(\.(?'minor'\d+)?))" />
    </capture>
    <capabilities>
      <capability name="browser" value="Edge" />
      <capability name="version" value="${version}" />
      <capability name="majorVersion" value="${major}" />
      <capability name="minorVersion" value="${minor}" />
    </capabilities>
  </browser>
</browsers>
Run Code Online (Sandbox Code Playgroud)

这很好地匹配Edge,但是如果使用Chrome向网站发出另一个请求,浏览器也会匹配为Edge:S

我究竟做错了什么?

.net user-agent browser-detection microsoft-edge

5
推荐指数
1
解决办法
855
查看次数

没有“SameSite”属性的 Cookie 在不同的子域上发送

所以我已经阅读了Chrome 80 的 cookie 默认为 SameSite=Lax并且像你们其他人一样,我现在正在尝试确定这将对我的网站产生的影响。

我正在运行的站点分为几个子域,每个子域都使用自己的 cookie。它看起来像这样:

  • first-site.domain.com使用Cookie1 ( path=/; secure; httponly)
  • second-site.domain.com使用Cookie2 ( path=/; secure; httponly)

由于这些 cookie 没有指定SameSite属性,它们应该被视为Lax在 Chrome 80 上,因此应该仅限于同站点请求(除非它是顶级导航)。

然后,根据SameSite cookie 的解释

如果用户在your-project.github.io 上并从my-project.github.io请求图像, 这是跨站点请求。

因此,当我启用“SameSite 默认 cookie”和“没有 SameSite 的 Cookie 必须是安全的”标志时,我惊讶地发现当first-site.domain.comsecond-site.domain.com嵌入到框架中时,Cookie2是仍然被发送到second-site.domain.com,这似乎是矛盾的。

我肯定是误会了什么,但此刻,我仍然不解。

注意:我已经验证,当我在anotherdomain.com的框架中嵌入second-site.domain.com时,cookie 不是由浏览器发送的(如预期的那样)。

cookies google-chrome samesite

4
推荐指数
1
解决办法
1703
查看次数

使用JavaScriptSerializer和自定义JavaScriptConverter序列化和反序列化Dictionary <int,object>

您如何使用JavaScriptSerializer和自定义JavaScriptConverter序列化和反序列化其键为JSON 整数的字典

对于那些不知道的人,JavaScripSerializer无法开箱即用.

请注意,我对需要在序列化之前转换字典或使用其他序列化程序的解决方案感兴趣(如果有的话,您可能会看到此帖子).

更新:为了消除任何歧义,我没有问题,密钥是作为JSON中的字符串生成的(因此1将变为"1").

c# serialization json dictionary javascriptserializer

2
推荐指数
1
解决办法
1821
查看次数