小编Hal*_*yon的帖子

从HTTP到HTTPS的跨域请求立即中止

我正在尝试从HTTP页面到HTTPS服务进行跨域Web服务调用.

我在服务器上设置了正确的CORS头(它与HTTP-HTTP和HTTPS-HTTPS一起使用).

如果我将请求更改为JSONp,它确实有效.

我在Chrome和Firefox中看到的是HTTPS请求永远不会被发送,它会立即中止,服务器永远不会看到请求.

值得注意的是,预检OPTIONS请求被中止(并且它没有到达服务器).

我找不到任何解释这确实不可能的来源(HTTP到HTTPS)和更好的解释原因.我可以理解HTTPS到HTTP是不安全的,但其他方式应该是好的吗?这对我来说似乎很愚蠢,因为JSONp有效(但它很麻烦).

笔记

我也withCredentials设置了true,我发送一些自定义标头和自定义Content-Type:application/json

我正在使用常规XMLHTTPRequest和JSONp的后备,IE <= 9

javascript https xmlhttprequest cors

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

动态生成表单的浏览器本机自动完成(使用ajax处理)

我正在动态生成一个表单.为简单起见,假设它是带有电子邮件/密码的登录表单.表单已提交,但是在提交时会触发一个处理实际登录的AJAX请求,并取消提交事件(e.preventDefault()).

e.preventDefault()用来取消表单的默认操作,即转到'action'中的页面,但这似乎也取消了浏览器的自动完成检测.

我认为您需要满足本机自动完成的几个要求才能工作:

  • 您的输入字段type="text"必须包含name
  • 表格必须提交< - 在我的情况下这并不是真的发生

我的分析是否正确,是否有办法在这种情况下自动完成工作?


为了避开粉丝:我不是在寻找任何涉及jQuery[插入你的框架]的解决方案,我想使用本机浏览器自动完成功能.我没有自动填写的单词列表.

html javascript autocomplete

20
推荐指数
2
解决办法
6456
查看次数

关闭窗口会打破事件循环假设

我遇到了一个令人烦恼的小问题.

问题1:在Internet Explorer中关闭窗口(通过它打开window.open)时,ownerDocument它将随之消失.

这意味着任何对DOM的调用,如appendChildcreateElement,将失败,SCRIPT70: Permission Denied或者SCRIPT1717: The interface is unknown.

我看过其他浏览器的行为,比如Chrome.在Chrome中ownerDocument仍然引用#documentownerDocument.defaultView最终会引用undefined.这对我来说很有意义.调用appendChildcreateElement会通过.只要你不试图defaultView直接引用,我认为一切都很好.

问题2:在Internet Explorer中单击生成窗口的关闭按钮时,它似乎不尊重事件循环.我将一个unload事件附加到生成的窗口,它立即触发,而不是在事件循环结束时排队.这对我来说没有意义.处理这个相当微不足道的问题变得十分不可能.

如果我们遇到问题1,那么将会出现一个令人痛苦但又直截了当的解决方案:检查是否ownerDocument存在,如果不存在则跳过.因为它ownerDocument在同步JavaScript代码中间消失了.

预期的行为:如果您引用它,DOM节点不应该消失 - 垃圾收集整理.

预期的行为2: DOM节点不应该在同步代码中消失.(除非你当然删除它).

已知的解决方法:将与DOM交互的所有代码移动到窗口中,以便在窗口关闭时,JavaScript运行时环境也是如此.这不是一个简单的解决方案,可能需要对您的架构进行重大更改.

Crappy解决方案:在一个函数中包装任何与DOM交互的函数,如果它检测到元素的窗口已经关闭,它将消耗错误.这是非常具有侵略性并且对性能有重大影响,IE已经非常缓慢.

有更好的解决方案吗?

我想要的是,至少可以忽略Error由于用户关闭窗口而抛出的任何内容.问题1问题2打破了你对JavaScript代码的基本假设:垃圾收集和事件循环.


演示脚本

<script type="text/javascript">
function go() …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer internet-explorer-9

15
推荐指数
1
解决办法
1733
查看次数

在PHP中访问日志记录

我想记录对文件/files夹中任何文件的访问,因此我可以使用PHP处理它以生成一些统计信息.

我不想编写一个名为via的自定义PHP处理程序,RewriteRule因为我不想处理状态代码,MIME类型和缓存头以及文件锁定问题.

我没有访问服务器配置,所以我无法使用CustomLog(我有权访问.htacess).

我无法使用,X-Sendfile因为它没有启用.

我没有访问权限access.log.


寻找一个明确的答案.

php apache logging

13
推荐指数
3
解决办法
1万
查看次数

.htaccess拒绝子文件夹中的文件

我想阻止访问"sub/folder/index.php",但不能阻止访问"index.php".

<Files index.php>
    Order allow,deny
    Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)

但可以阻止所有"index.php"文件.

<Files sub/folder/index.php>
    Order allow,deny
    Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)

不起作用.我需要使用<Directory>吗?

我不想在子/文件夹中创建.htaccess文件

我无法访问httpd.conf

我不想阻止子/目录中的所有内容

如果这很容易,我不会问;)

php apache .htaccess

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

如何处理HTML电子邮件中的长链接

我在网上搜索了这个,我可以找到两个解决方案:

  1. 使用URL缩短器.
  2. 使用括号< >允许插入空格.这仅适用于纯文本电子邮件.

我发送的HTML电子邮件包含敏感信息,如密码恢复链接和自动身份验证链接.这些安全链接本质上很长.容易超过70个字符或对电子邮件正文施加任何限制.

显然我不能使用任何形式的URL缩短,因为它会绕过我用于链接的任何安全加密技术.

我想最大的问题是电子邮件客户端没有很好地包装链接.CSS3技术支持很好的自动换行,因此MS Outlook无法支持这一点.

如何使链接不会在视觉上造成破坏,并且在电子邮件客户端出现故障时可能很容易复制粘贴?

如果链接似乎没有工作,尝试复制粘贴到您的浏览器:hxxp://开发/#AUTH/YoxOntz0Oj0ExOiJfcmFuG9tbmVzcyI7czoxOTI6kJsYkV0qMGMuZ1pFZVQ5YkRQNDZPR200Unl60dGlpNlhZZC9QcEVeH0lvV2NVVlpWWFcwWlF0VjRyc0p4akYzclJ0GTkJmSlgxco0aEtDS0FuTlBVSXAxUVhCcGdRNGpHMVl5UGZMRFVacDVSQ1BqcU0tKYlNxZ0FqYXpjTkNqTS9LV29xSk4ydGtyeFpNdV0c2VLMERUbEYwc08xUWU5aXR0GOXl0bVFpcjlXeGZjUE100S0o1L1FcmQ4MmhOdm5LUSI7fQ

补充说明:

我不希望我的链接过期.如果我希望它们到期,我将有几个月的时间框架,而不是几个小时.这些链接不仅仅是密码恢复链接.

php html-email

11
推荐指数
1
解决办法
1万
查看次数

无法从释放的脚本执行代码 - IE6 IE7 IE8 IE9

我今天在IE6中遇到了这个问题(但在所有最新版本的IE上都可以重现).

我注意到有不少人遇到这个问题,我还没有看到一个非常实用的方法来解决这个问题.

关于HTML文档头部中的脚本标记和元标记的顺序似乎还有一些其他解决方案.我还没有确认这一点,但无论如何这里是一个链接: 导致错误的原因是"无法从释放的脚本执行代码"

我也知道这个问题的解决方案所以我在下面发布它

javascript internet-explorer-8 internet-explorer-7 internet-explorer-6 internet-explorer-9

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

建议数据的文件名:URI

我在JavaScript中生成一个SVG字符串.

我通过以下方式向用户提供:

window.open("data:image/svg+xml," + svg_xml_string);
Run Code Online (Sandbox Code Playgroud)

当您尝试在Chrome中保存该页面时,它会建议保存为download.svg,无论如何我可以更改下载的默认文件名?


我试过了:

data:image/svg+xml;headers=Content-Disposition%3Aattachment%3Bfilename%3D%22suggest.svg%22,...
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

html javascript

7
推荐指数
1
解决办法
2433
查看次数

json_encode序列化空字节

我今天碰到了这个问题.来自PHP.net doc:serialize

注意: Object的私有成员的类名前置于成员名称; 受保护的成员在成员名称前面加上'*'.这些前置值在任一侧都有空字节.

我正在使用debug_backtrace为调试报告生成跟踪,该报告得到json_encoded.在内部,它使用序列化器生成跟踪数据.

这是:(部分)输出json_encode:

{"\u0000MyObject\u0000my_var":[]}
Run Code Online (Sandbox Code Playgroud)

问题是json_decode无法处理这个问题,它会抱怨null字节.

json_encode高兴写出json_decode无法解码的空字节.这对我来说似乎有点不稳定.我希望能够json_encode处理必要的转义,或者至少json_decode可以解析由json_encode它产生的任何东西,但事实并非如此.

我想我有几个解决方案:

  • 从跟踪中删除空字节,我对反序列化不太感兴趣,我只想要一个字符串表示.
  • 从跟踪中一起剥离私有变量.
  • 修复,json_encode以便它不会产生空字节
  • 修复json_decode,使其接受空字节

有没有人遇到这个问题,你是如何解决它的?


样品:

<?php
class MyClass {
    public $mypublic = 1;
    private $myprivate = 2;
    public function myfunc() {
        return debug_backtrace();
    }
}
$c = new MyClass();
$json = json_encode(call_user_func_array(array($c, "myfunc"), new MyClass()));
echo $json;
echo json_decode($json); // <-- …
Run Code Online (Sandbox Code Playgroud)

php json

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

使用 php:SoapClient 构建复杂类型序列的 SOAP 请求的正确方法是什么?

我正在努力理解SoapClient 的工作原理。

WDSL

<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="[redacted]">
      <s:element name="GetResult">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="Foo" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="Bar">
              <s:complexType mixed="true">
                <s:sequence>
                  <s:any />
                </s:sequence>
              </s:complexType>
            </s:element>
        </s:complexType>
      </s:element>
      [..]
    </s:schema>
  </wsdl:types>
  [..]
</wsdl:definitions>
Run Code Online (Sandbox Code Playgroud)

Web 服务的所有者建议请求必须如下所示:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Body>
        <GetResult xmlns="[redacted]">
            <Bar>
                <Bar>
                    <Qux>bar_qux_value</Qux>
                </Bar>
            </Bar>
            <Foo>foo_string</Operation>
        </GetResult>
    </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

我认为我应该做的是:

$client = new \SoapClient($url_to_wsdl);
$result = $client->GetResult([
    "Foo" => "foo_value",
    "Bar" => [
        "Bar" => [
            "Qux" => "bar_qux_value"
        ] …
Run Code Online (Sandbox Code Playgroud)

php soap soap-client

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