Studio 3错误消息重新进行W3C验证

时间:2013-03-11 23:53:52

标签: user-agent validation aptana3 http-status-code-403

来自新手的简短问题。有没有其他人使用Aptana Studio 3在使用W3C验证时收到任何错误消息?

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的工具包。看起来好像W3C验证服务需要一个用户代理字符串,因为它可以直接由浏览器提供,但可能不是由编辑器/ IDE提供的?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

首先,使用其他浏览器。所有浏览器都应该发送一个用户代理字符串,没有网站应该依赖于该字符串的存在,或者黑名单已知的坏浏览器。

您真的应该使用合规性测试开发人员工具集在兼容的浏览器(如Chrome或Firefox)中测试您的代码,而不是来自您的IDE。

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