1

只是一个新手的快速问题。在使用 W3C 验证时,是否有其他人使用 Aptana Studio 3 收到任何错误消息?

Status: 403 Forbidden Vary: Referer Content-type: text/html

Markup Validation Service

Sorry! This document can not be checked.
No User-Agent header found!

一个快速的谷歌建议其他编辑器/IDE 用户正在经历类似的事情,例如 HTML-Kit。看起来 W3C 验证服务需要一个用户代理字符串,这将由浏览器直接提供,但可能不是由编辑器/IDE 提供?

我知道可以通过使用不同的验证服务或通过浏览器检查代码来解决此问题。只是想我会标记它。

4

2 回答 2

2

为此,我已向 Aptana Studio 项目提交了修复程序。此修复涉及将 http 用户代理添加到发送到 w3c 的帖子中。

w3c_validation.rb

将 w3c_validation.rb 文件中的文本替换为以下文本。示例路径:C:\Users\user\AppData\Local\Aptana Studio 3\configuration\org.eclipse.osgi\bundles\101\1.cp\bundles\html.ruble\commands\w3c_validation.rb

require 'ruble'

command t(:validate_syntax) do |cmd|
  cmd.key_binding = 'CONTROL+M2+V'
  cmd.scope = 'text.html'
  cmd.output = :show_as_html
  cmd.input = :document
  cmd.invoke do |context|
    $KCODE = 'U'
    page = $stdin.read
    page.gsub!(/<\?(php|=).*?\?>|<%.*?%>/m, '')

    w3c_url = 'http://validator.w3.org/check'

    require 'net/http'
    require 'uri'

#fix for w3c blocking http requests without a user-agent
#changed the way the http post is sent to w3c so that it includes a user-agent

uri = URI(w3c_url)
req = Net::HTTP::Post.new(uri.path)
req.set_form_data({'ss' => "1", 'fragment' => page})
req['User-Agent'] = 'Aptana'

response = Net::HTTP.start(uri.host, uri.port) do |http|
  http.request(req)
end
    status = response['x-w3c-validator-status']

    content = response.body
    content = content.gsub(/<\/title>/, '\&<base href="http://validator.w3.org/">')
    # content.gsub!(/Line (\d+),? Column (\d+)/i) do
    # # FIXME These links won't work for us!
    # "<a href='txmt://open?line=#\$1&column=#{\$2.to_i + 1}'>#\$&</a>"
    # end
    content
  end
end
于 2013-07-24T13:18:18.010 回答
0

IDE 中的浏览器不符合 W3C HTTP 标准

此外,您无法使用 Web 工具检查尚未发布到 Web 的页面。您需要设置一个小型测试服务器才能使用它。

首先,使用不同的浏览器。所有浏览器都应该发送一个用户代理字符串,任何网站都不应依赖于该字符串的存在,或者将已知的不良浏览器列入黑名单。

你真的应该在兼容的浏览器中测试你的代码,例如 Chrome 或 Firefox,使用合规性测试开发工具集,而不是在你的 IDE 中。

如果必须,您可以改为从 W3C 网站下载工具的客户端版本来检查您的代码。它是一个可在所有平台上使用的命令行工具。Firefox、Chrome 和衍生工具的扩展使用这些工具的库版本。(同样,您不能使用 IDE 浏览器。)

于 2013-04-18T08:53:24.520 回答